Skip to content
Snippets Groups Projects
Verified Commit 000e5509 authored by Louis's avatar Louis :fire:
Browse files

Fix incorrect target colour generation for column palette

parent 8488fc84
No related branches found
No related tags found
No related merge requests found
Pipeline #676 waiting for manual action with stages
in 11 seconds
/target
.idea/
exmp/
\ No newline at end of file
exmp/
/*.png
\ No newline at end of file
......@@ -2,7 +2,10 @@ use clap::Parser;
use image::ImageFormat;
use serde::{Deserialize, Serialize};
use crate::commands::{Atlas, Extract, Extrude, Flip, Info, Palette, Pipeline, Reduce, Remap, Rotate, Scale, Split, Swap};
use crate::commands::{
Atlas, Extract, Extrude, Flip, Info, Palette, Pipeline, Reduce, Remap, Rotate, Scale, Split,
Swap,
};
use crate::load_image;
......@@ -51,8 +54,8 @@ pub enum Args {
#[clap(name = "info")]
#[serde(alias = "info")]
Info(Info),
#[clap(name = "info")]
#[serde(alias = "info")]
#[clap(name = "swap")]
#[serde(alias = "swap")]
Swap(Swap),
}
......@@ -109,11 +112,11 @@ impl Args {
let image_data = load_image(&swap.input, None)?;
let palette_data = load_image(&swap.palette, None)?;
let palette_swap = Palette::from_columns(&palette_data)?;
let output = Remap::remap_image(image_data, palette_swap)?;
let output = Swap::swap_pixels(image_data, palette_swap)?;
output
.save_with_format(&swap.output, ImageFormat::Png)
.map_err(anyhow::Error::from)
},
}
Args::Reduce(reduce) => {
if let Some(amount) = reduce.colours {
log::info!("Num cols {}", amount);
......
......@@ -24,4 +24,4 @@ pub use remap::Remap;
pub use rotate::Rotate;
pub use scale::Scale;
pub use split::Split;
pub use swap::Swap;
\ No newline at end of file
pub use swap::Swap;
......@@ -3,12 +3,12 @@ use std::cmp::{min, Ordering};
use std::collections::hash_map::RandomState;
use std::collections::{HashMap, HashSet};
use std::io::Write;
use anyhow::Error;
use deltae::{Delta, LabValue, DE2000};
use image::{GenericImage, Pixel, Rgba};
use num_traits::ToPrimitive;
use serde::{Deserialize, Serialize};
use std::io::Write;
use crate::format::PaletteFormat;
use crate::utils::{new_image, BasicRgba};
......@@ -37,7 +37,7 @@ pub fn sort_by_hue(palette: &mut PixelPalette) {
/// Create a palette file containing every distinct colour from the input image
#[derive(Parser, Clone, Serialize, Deserialize, Debug)]
#[clap(author, version = "0.3.0")]
#[clap(author, version = "0.9.0")]
pub struct Palette {
/// The path to the image file
#[serde(default)]
......@@ -98,6 +98,18 @@ impl Palette {
out_image.save(self.output.as_str())?;
}
PaletteFormat::Columns => {
let image_width = 2;
let image_height = colours.len();
let mut out_image = new_image(image_width as u32, image_height as u32);
for (idx, colour) in colours.iter().enumerate() {
out_image.put_pixel(0, idx as u32, Rgba::from(colour));
out_image.put_pixel(1, idx as u32, Rgba::from(colour));
}
out_image.save(self.output.as_str())?;
}
PaletteFormat::Txt => {
let mut file = std::fs::File::create(self.output.as_str())?;
for colour in colours.iter() {
......@@ -129,10 +141,10 @@ impl Palette {
]);
let left_pixel = BasicRgba::from(data);
let data = Rgba::from([
left.0[0].to_u8().unwrap(),
left.0[1].to_u8().unwrap(),
left.0[2].to_u8().unwrap(),
left.0[3].to_u8().unwrap(),
right.0[0].to_u8().unwrap(),
right.0[1].to_u8().unwrap(),
right.0[2].to_u8().unwrap(),
right.0[3].to_u8().unwrap(),
]);
let right_pixel = BasicRgba::from(data);
mapping.insert(left_pixel, right_pixel);
......
......@@ -15,6 +15,8 @@ pub enum PaletteFormat {
#[default]
#[serde(alias = "png")]
Png,
#[serde(alias = "columns")]
Columns,
}
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum, Debug)]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment