sic icon indicating copy to clipboard operation
sic copied to clipboard

image-script

Open foresterre opened this issue 2 years ago • 0 comments

type Image = internal 'Image<InputMetadata>';
type Set[T] = internal 'Set';
type Seq[T] = internal 'Seq';

fn Image.resize = (image: Image) => image
  |> call_internal 'ImageOps::resize'; 

struct Image<Meta> {
  buffer: DynamicImage
  meta: Meta, 
}

enum InputMetadata {
	FromSource(FromSourceMeta),
	Erased,
}

struct FromSourceMeta {
 source: Source,
 ...
}

enum Source {
	Stdin,
	Path(PathBuf),
}
m := Input.read "media/input.png"; #type: fn(Path) => Image
s := Input.read_glob "media/*.jpeg"; #type: fn(GlobPath) => Set[Image]

m' := m # new pipeline
|> Image.resize {x: 480, y: 720} # input type Image, with `argument_map { required: {x: usize, y: usize} }, optional: {}}` #type: fn(Image, {x: usize, y: usize}) => Image 
|> Seq.repeat #type: fn(Image) => Seq[Image]
|> Seq.map (image) => ... #type: fn(Seq[Image], fn(Image) => Image) => Seq[Image]
|> Animate.fromSeq #type fn(Seq[Image] => AnimatedImage);

Output.write m' { path: "media/output/dance.png", format: "apng") #type (into ImageBuffer => Unit)

Experimental.unlock Info.print;

Set.each (image) => Info.print image.meta.path;

Output.write_all s { folder: 'media/output', format: 'png' }

foresterre avatar Mar 31 '22 09:03 foresterre