@@ -5,45 +5,82 @@ import 'extract_quantizer.dart';
55import 'remap_quantizer.dart' ;
66
77class ImageProcessing {
8- static img.Image binaryDither (img.Image orgImg) {
8+ static img.Image bwFloydSteinbergDither (img.Image orgImg) {
99 var image = img.Image .from (orgImg);
1010 return img.ditherImage (image, quantizer: img.BinaryQuantizer ());
1111 }
1212
13- static img.Image halftone (img.Image orgImg) {
13+ static img.Image bwFalseFloydSteinbergDither (img.Image orgImg) {
14+ var image = img.Image .from (orgImg);
15+ return img.ditherImage (image,
16+ quantizer: img.BinaryQuantizer (),
17+ kernel: img.DitherKernel .falseFloydSteinberg);
18+ }
19+
20+ static img.Image bwStuckiDither (img.Image orgImg) {
21+ var image = img.Image .from (orgImg);
22+ return img.ditherImage (image,
23+ quantizer: img.BinaryQuantizer (), kernel: img.DitherKernel .stucki);
24+ }
25+
26+ static img.Image bwAtkinsonDither (img.Image orgImg) {
27+ var image = img.Image .from (orgImg);
28+ return img.ditherImage (image,
29+ quantizer: img.BinaryQuantizer (), kernel: img.DitherKernel .atkinson);
30+ }
31+
32+ static img.Image bwThreshold (img.Image orgImg) {
33+ var image = img.Image .from (orgImg);
34+ return img.ditherImage (image,
35+ quantizer: img.BinaryQuantizer (), kernel: img.DitherKernel .none);
36+ }
37+
38+ static img.Image bwHalftoneDither (img.Image orgImg) {
1439 final image = img.Image .from (orgImg);
1540 img.grayscale (image);
16- img.colorHalftone (image);
41+ img.colorHalftone (image, size : 3 );
1742 return img.ditherImage (image, quantizer: img.BinaryQuantizer ());
1843 }
1944
20- static img.Image colorHalftone (img.Image orgImg) {
45+ static img.Image bwrHalftone (img.Image orgImg) {
2146 var image = img.Image .from (orgImg);
2247
23- // Tri-color palette
24- final palette = img.PaletteUint8 (3 , 3 );
25- palette.setRgb (0 , 255 , 0 , 0 ); // red
26- palette.setRgb (1 , 0 , 0 , 0 ); // black
27- palette.setRgb (2 , 255 , 255 , 255 ); // white
48+ img.colorHalftone (image, size: 3 );
49+ return img.ditherImage (image,
50+ quantizer: RemapQuantizer (palette: _createTriColorPalette ()),
51+ kernel: img.DitherKernel .floydSteinberg);
52+ }
53+
54+ static img.Image bwrFloydSteinbergDither (img.Image orgImg) {
55+ var image = img.Image .from (orgImg);
2856
29- img.colorHalftone (image);
3057 return img.ditherImage (image,
31- quantizer: RemapQuantizer (palette: palette ),
58+ quantizer: RemapQuantizer (palette: _createTriColorPalette () ),
3259 kernel: img.DitherKernel .floydSteinberg);
3360 }
3461
35- static img.Image rwbTriColorDither (img.Image orgImg) {
62+ static img.Image bwrFalseFloydSteinbergDither (img.Image orgImg) {
3663 var image = img.Image .from (orgImg);
3764
38- // Tri-color palette
39- final palette = img.PaletteUint8 (3 , 3 );
40- palette.setRgb (0 , 255 , 0 , 0 ); // red
41- palette.setRgb (1 , 0 , 0 , 0 ); // black
42- palette.setRgb (2 , 255 , 255 , 255 ); // white
65+ return img.ditherImage (image,
66+ quantizer: RemapQuantizer (palette: _createTriColorPalette ()),
67+ kernel: img.DitherKernel .falseFloydSteinberg);
68+ }
69+
70+ static img.Image bwrStuckiDither (img.Image orgImg) {
71+ var image = img.Image .from (orgImg);
4372
4473 return img.ditherImage (image,
45- quantizer: RemapQuantizer (palette: palette),
46- kernel: img.DitherKernel .floydSteinberg);
74+ quantizer: RemapQuantizer (palette: _createTriColorPalette ()),
75+ kernel: img.DitherKernel .stucki);
76+ }
77+
78+ static img.Image bwrTriColorAtkinsonDither (img.Image orgImg) {
79+ var image = img.Image .from (orgImg);
80+
81+ return img.ditherImage (image,
82+ quantizer: RemapQuantizer (palette: _createTriColorPalette ()),
83+ kernel: img.DitherKernel .atkinson);
4784 }
4885
4986 static img.Image extract (Color toBeExtract, img.Image orgImg) {
@@ -54,17 +91,19 @@ class ImageProcessing {
5491 kernel: img.DitherKernel .none);
5592 }
5693
57- static img.Image experiment (img.Image orgImg) {
94+ static img.Image bwrThreshold (img.Image orgImg) {
5895 var image = img.Image .from (orgImg);
5996
60- // Tri-color palette
61- final palette = img.PaletteUint8 (3 , 3 );
62- palette.setRgb (0 , 255 , 0 , 0 ); // red
63- palette.setRgb (1 , 0 , 0 , 0 ); // black
64- palette.setRgb (2 , 255 , 255 , 255 ); // white
65-
6697 return img.ditherImage (image,
67- quantizer: RemapQuantizer (palette: palette ),
98+ quantizer: RemapQuantizer (palette: _createTriColorPalette () ),
6899 kernel: img.DitherKernel .none);
69100 }
70101}
102+
103+ img.PaletteUint8 _createTriColorPalette () {
104+ final palette = img.PaletteUint8 (3 , 3 );
105+ palette.setRgb (0 , 255 , 0 , 0 ); // red
106+ palette.setRgb (1 , 0 , 0 , 0 ); // black
107+ palette.setRgb (2 , 255 , 255 , 255 ); // white
108+ return palette;
109+ }
0 commit comments