Skip to content

Commit 2c1f670

Browse files
committed
Added Stucki Dither and added helper function for palette
1 parent cf1ba64 commit 2c1f670

4 files changed

Lines changed: 33 additions & 37 deletions

File tree

lib/util/epd/gdey037z03.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class Gdey037z03 extends Epd {
2727
Gdey037z03() {
2828
processingMethods.add(ImageProcessing.bwrFloydSteinbergDither);
2929
processingMethods.add(ImageProcessing.bwrFalseFloydSteinbergDither);
30+
processingMethods.add(ImageProcessing.bwrStuckiDither);
3031
processingMethods.add(ImageProcessing.bwrTriColorAtkinsonDither);
3132
processingMethods.add(ImageProcessing.bwrHalftone);
3233
processingMethods.add(ImageProcessing.bwrNoDither);

lib/util/epd/gdey037z03bw.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class Gdey037z03BW extends Epd {
2727
Gdey037z03BW() {
2828
processingMethods.add(ImageProcessing.bwFloydSteinbergDither);
2929
processingMethods.add(ImageProcessing.bwFalseFloydSteinbergDither);
30+
processingMethods.add(ImageProcessing.bwStuckiDither);
3031
processingMethods.add(ImageProcessing.bwAtkinsonDither);
3132
processingMethods.add(ImageProcessing.bwHalftoneDither);
3233
processingMethods.add(ImageProcessing.bwNoDither);

lib/util/image_processing/image_processing.dart

Lines changed: 29 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ class ImageProcessing {
1717
kernel: img.DitherKernel.falseFloydSteinberg);
1818
}
1919

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+
2026
static img.Image bwAtkinsonDither(img.Image orgImg) {
2127
var image = img.Image.from(orgImg);
2228
return img.ditherImage(image,
@@ -32,64 +38,48 @@ class ImageProcessing {
3238
static img.Image bwHalftoneDither(img.Image orgImg) {
3339
final image = img.Image.from(orgImg);
3440
img.grayscale(image);
35-
img.colorHalftone(image);
41+
img.colorHalftone(image, size: 3);
3642
return img.ditherImage(image, quantizer: img.BinaryQuantizer());
3743
}
3844

3945
static img.Image bwrHalftone(img.Image orgImg) {
4046
var image = img.Image.from(orgImg);
4147

42-
// Tri-color palette
43-
final palette = img.PaletteUint8(3, 3);
44-
palette.setRgb(0, 255, 0, 0); // red
45-
palette.setRgb(1, 0, 0, 0); // black
46-
palette.setRgb(2, 255, 255, 255); // white
47-
48-
img.colorHalftone(image);
48+
img.colorHalftone(image, size: 3);
4949
return img.ditherImage(image,
50-
quantizer: RemapQuantizer(palette: palette),
50+
quantizer: RemapQuantizer(palette: _createTriColorPalette()),
5151
kernel: img.DitherKernel.floydSteinberg);
5252
}
5353

5454
static img.Image bwrFloydSteinbergDither(img.Image orgImg) {
5555
var image = img.Image.from(orgImg);
5656

57-
// Tri-color palette
58-
final palette = img.PaletteUint8(3, 3);
59-
palette.setRgb(0, 255, 0, 0); // red
60-
palette.setRgb(1, 0, 0, 0); // black
61-
palette.setRgb(2, 255, 255, 255); // white
62-
6357
return img.ditherImage(image,
64-
quantizer: RemapQuantizer(palette: palette),
58+
quantizer: RemapQuantizer(palette: _createTriColorPalette()),
6559
kernel: img.DitherKernel.floydSteinberg);
6660
}
6761

6862
static img.Image bwrFalseFloydSteinbergDither(img.Image orgImg) {
6963
var image = img.Image.from(orgImg);
7064

71-
// Tri-color palette
72-
final palette = img.PaletteUint8(3, 3);
73-
palette.setRgb(0, 255, 0, 0); // red
74-
palette.setRgb(1, 0, 0, 0); // black
75-
palette.setRgb(2, 255, 255, 255); // white
76-
7765
return img.ditherImage(image,
78-
quantizer: RemapQuantizer(palette: palette),
66+
quantizer: RemapQuantizer(palette: _createTriColorPalette()),
7967
kernel: img.DitherKernel.falseFloydSteinberg);
8068
}
8169

82-
static img.Image bwrTriColorAtkinsonDither(img.Image orgImg) {
70+
static img.Image bwrStuckiDither(img.Image orgImg) {
8371
var image = img.Image.from(orgImg);
8472

85-
// Tri-color palette
86-
final palette = img.PaletteUint8(3, 3);
87-
palette.setRgb(0, 255, 0, 0); // red
88-
palette.setRgb(1, 0, 0, 0); // black
89-
palette.setRgb(2, 255, 255, 255); // white
73+
return img.ditherImage(image,
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);
9080

9181
return img.ditherImage(image,
92-
quantizer: RemapQuantizer(palette: palette),
82+
quantizer: RemapQuantizer(palette: _createTriColorPalette()),
9383
kernel: img.DitherKernel.atkinson);
9484
}
9585

@@ -104,14 +94,16 @@ class ImageProcessing {
10494
static img.Image bwrNoDither(img.Image orgImg) {
10595
var image = img.Image.from(orgImg);
10696

107-
// Tri-color palette
108-
final palette = img.PaletteUint8(3, 3);
109-
palette.setRgb(0, 255, 0, 0); // red
110-
palette.setRgb(1, 0, 0, 0); // black
111-
palette.setRgb(2, 255, 255, 255); // white
112-
11397
return img.ditherImage(image,
114-
quantizer: RemapQuantizer(palette: palette),
98+
quantizer: RemapQuantizer(palette: _createTriColorPalette()),
11599
kernel: img.DitherKernel.none);
116100
}
117101
}
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+
}

lib/view/widget/image_list.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@ class _ImageList extends State<ImageList> {
2323
return {
2424
ImageProcessing.bwFloydSteinbergDither: 'Floyd-Steinberg',
2525
ImageProcessing.bwFalseFloydSteinbergDither: 'False Floyd-Steinberg',
26+
ImageProcessing.bwStuckiDither: 'Stucki',
2627
ImageProcessing.bwAtkinsonDither: 'Atkinson',
2728
ImageProcessing.bwNoDither: 'None',
2829
ImageProcessing.bwHalftoneDither: 'Halftone',
2930
ImageProcessing.bwrHalftone: 'Color Halftone',
3031
ImageProcessing.bwrFloydSteinbergDither: 'BWR Floyd-Steinberg',
3132
ImageProcessing.bwrFalseFloydSteinbergDither: 'BWR False Floyd-Steinberg',
33+
ImageProcessing.bwrStuckiDither: 'BWR Stucki',
3234
ImageProcessing.bwrTriColorAtkinsonDither: 'BWR Atkinson',
3335
ImageProcessing.bwrNoDither: 'None'
3436
};

0 commit comments

Comments
 (0)