From a6221737e00daaad24b1564672c63f1a06d94bad Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 30 Sep 2024 20:10:28 +0700 Subject: [PATCH 1/3] - fix: record screen on Iphone --- lib/src/exporter.dart | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/lib/src/exporter.dart b/lib/src/exporter.dart index ebfbeb0..3fa295a 100644 --- a/lib/src/exporter.dart +++ b/lib/src/exporter.dart @@ -30,8 +30,7 @@ class Exporter { } final bytesImages = []; for (final frame in _frames) { - final bytesImage = - await frame.image.toByteData(format: ui.ImageByteFormat.png); + final bytesImage = await frame.image.toByteData(format: ui.ImageByteFormat.png); if (frame.image.width >= _maxWidthFrame) { _maxWidthFrame = frame.image.width; @@ -55,8 +54,7 @@ class Exporter { if (frames == null) { return null; } - return compute( - _exportGif, DataHolder(frames, _maxWidthFrame, _maxHeightFrame)); + return compute(_exportGif, DataHolder(frames, _maxWidthFrame, _maxHeightFrame)); } static Future?> _exportGif(DataHolder data) async { @@ -98,15 +96,20 @@ class Exporter { static image.PaletteUint8 _convertPalette(image.Palette palette) { final newPalette = image.PaletteUint8(palette.numColors, 4); for (var i = 0; i < palette.numColors; i++) { - newPalette.setRgba( - i, palette.getRed(i), palette.getGreen(i), palette.getBlue(i), 255); + newPalette.setRgba(i, palette.getRed(i), palette.getGreen(i), palette.getBlue(i), 255); } return newPalette; } - static image.Image _encodeGifWIthTransparency(image.Image srcImage, - {int transparencyThreshold = 1}) { - final newImage = image.quantize(srcImage); + static image.Image _encodeGifWIthTransparency(image.Image srcImage, {int transparencyThreshold = 1}) { + var format = srcImage.format; + image.Image image32; + if (format != image.Format.int8) { + image32 = srcImage.convert(format: image.Format.uint8); + } else { + image32 = srcImage; + } + final newImage = image.quantize(image32); // GifEncoder will use palette colors with a 0 alpha as transparent. Look at the pixels // of the original image and set the alpha of the palette color to 0 if the pixel is below @@ -121,8 +124,7 @@ class Exporter { for (final srcPixel in srcFrame) { if (srcPixel.a < transparencyThreshold) { final newPixel = newFrame.getPixel(srcPixel.x, srcPixel.y); - palette.setAlpha( - newPixel.index.toInt(), 0); // Set the palette color alpha to 0 + palette.setAlpha(newPixel.index.toInt(), 0); // Set the palette color alpha to 0 } } From 27a3b4f303235915bcebbefc3a34896e38c86aa1 Mon Sep 17 00:00:00 2001 From: Brian Date: Tue, 1 Oct 2024 09:36:21 +0700 Subject: [PATCH 2/3] style: format code --- lib/src/exporter.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/src/exporter.dart b/lib/src/exporter.dart index 3fa295a..d999928 100644 --- a/lib/src/exporter.dart +++ b/lib/src/exporter.dart @@ -30,7 +30,8 @@ class Exporter { } final bytesImages = []; for (final frame in _frames) { - final bytesImage = await frame.image.toByteData(format: ui.ImageByteFormat.png); + const ui.ImageByteFormat format = ui.ImageByteFormat.png; + final bytesImage = await frame.image.toByteData(format: format); if (frame.image.width >= _maxWidthFrame) { _maxWidthFrame = frame.image.width; @@ -101,7 +102,10 @@ class Exporter { return newPalette; } - static image.Image _encodeGifWIthTransparency(image.Image srcImage, {int transparencyThreshold = 1}) { + static image.Image _encodeGifWIthTransparency( + image.Image srcImage, { + int transparencyThreshold = 1, + }) { var format = srcImage.format; image.Image image32; if (format != image.Format.int8) { From 0c00351a3127486102986d15be8be320104b483d Mon Sep 17 00:00:00 2001 From: Brian Date: Wed, 2 Oct 2024 10:34:31 +0700 Subject: [PATCH 3/3] style: format style --- lib/src/exporter.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/src/exporter.dart b/lib/src/exporter.dart index d999928..634819f 100644 --- a/lib/src/exporter.dart +++ b/lib/src/exporter.dart @@ -55,7 +55,8 @@ class Exporter { if (frames == null) { return null; } - return compute(_exportGif, DataHolder(frames, _maxWidthFrame, _maxHeightFrame)); + DataHolder dataHolder = DataHolder(frames, _maxWidthFrame, _maxHeightFrame); + return compute(_exportGif, dataHolder); } static Future?> _exportGif(DataHolder data) async { @@ -97,7 +98,10 @@ class Exporter { static image.PaletteUint8 _convertPalette(image.Palette palette) { final newPalette = image.PaletteUint8(palette.numColors, 4); for (var i = 0; i < palette.numColors; i++) { - newPalette.setRgba(i, palette.getRed(i), palette.getGreen(i), palette.getBlue(i), 255); + num r = palette.getRed(i); + num g = palette.getGreen(i); + num b = palette.getBlue(i); + newPalette.setRgba(i, r, g, b, 255); } return newPalette; }