From 5ef51beb3d0a7a1a9e3b081435d75bb2933930a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Mon, 2 Feb 2026 22:43:32 +0100 Subject: [PATCH] Added: APNG (animated PNG) export for frames, sprites and morphshapes --- CHANGELOG.md | 1 + lib/jpexs-apng.jar | Bin 0 -> 40899 bytes lib/jpexs-apng.license.txt | 21 +++++++++ libsrc/ffdec_lib/README.md | 5 +- libsrc/ffdec_lib/lib/jpexs-apng.jar | Bin 0 -> 40899 bytes libsrc/ffdec_lib/lib/jpexs-apng.license.txt | 21 +++++++++ libsrc/ffdec_lib/nbproject/project.xml | 2 +- .../flash/exporters/FrameExporter.java | 44 ++++++++++++++++++ .../flash/exporters/MorphShapeExporter.java | 7 +++ .../exporters/modes/FrameExportMode.java | 4 ++ .../exporters/modes/MorphShapeExportMode.java | 4 ++ .../exporters/modes/SpriteExportMode.java | 4 ++ .../settings/MorphShapeExportSettings.java | 1 + .../jpexs/decompiler/flash/console/help.txt | 3 ++ .../flash/gui/locales/ExportDialog.properties | 5 +- 15 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 lib/jpexs-apng.jar create mode 100644 lib/jpexs-apng.license.txt create mode 100644 libsrc/ffdec_lib/lib/jpexs-apng.jar create mode 100644 libsrc/ffdec_lib/lib/jpexs-apng.license.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index d8a9202b7..0610abba3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file. - Export dialog - Icons per export type and arrow symbol - Updated German translation (AI used) - Slovak translation (AI used) +- APNG (animated PNG) export for frames, sprites and morphshapes ### Fixed - [#2603] Export Sprite as SWF - sprite frames as timeline frames, without sprite itself diff --git a/lib/jpexs-apng.jar b/lib/jpexs-apng.jar new file mode 100644 index 0000000000000000000000000000000000000000..603c78099135161ccc59a306c90e135b5f926488 GIT binary patch literal 40899 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 src - ../../src;lib/LZMA.jar;lib/avi.jar;lib/cmykjpeg.jar;lib/ddsreader.jar;lib/gif.jar;lib/gnujpdf.jar;lib/jlayer-1.0.2.jar;lib/jpacker.jar;lib/nellymoser.jar;lib/sfntly.jar;lib/tga.jar;lib/ttf.jar;lib/vlcj-4.7.3.jar;lib/vlcj-natives-4.7.0.jar;lib/flashdebugger.jar;lib/jna-3.5.1.jar;lib/jna-platform-3.5.1.jar;lib/gifreader.jar;lib/miterstroke.jar;lib/decimal.jar;lib/flacomdoc.jar;lib/tomlj-1.1.1.jar;lib/decimal.jar;lib/webp4j-1.4.0.jar + ../../src;lib/LZMA.jar;lib/avi.jar;lib/cmykjpeg.jar;lib/ddsreader.jar;lib/gif.jar;lib/gnujpdf.jar;lib/jlayer-1.0.2.jar;lib/jpacker.jar;lib/nellymoser.jar;lib/sfntly.jar;lib/tga.jar;lib/ttf.jar;lib/vlcj-4.7.3.jar;lib/vlcj-natives-4.7.0.jar;lib/flashdebugger.jar;lib/jna-3.5.1.jar;lib/jna-platform-3.5.1.jar;lib/gifreader.jar;lib/miterstroke.jar;lib/decimal.jar;lib/flacomdoc.jar;lib/tomlj-1.1.1.jar;lib/decimal.jar;lib/webp4j-1.4.0.jar;lib/jpexs-apng.jar build reports dist diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FrameExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FrameExporter.java index f40b6c7f5..5b67618a8 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FrameExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/FrameExporter.java @@ -65,6 +65,10 @@ import com.jpexs.helpers.Helper; import com.jpexs.helpers.Path; import com.jpexs.helpers.SerializableImage; import com.jpexs.helpers.utf8.Utf8Helper; +import com.jpexs.images.apng.AnimatedPngDecoder; +import com.jpexs.images.apng.AnimatedPngEncoder; +import com.jpexs.images.apng.data.AnimatedPngData; +import com.jpexs.images.apng.data.AnimationFrameData; import dev.matrixlab.webp4j.WebPCodec; import dev.matrixlab.webp4j.animation.AnimatedWebPEncoder; import dev.matrixlab.webp4j.gif.GifToWebPConfig; @@ -151,6 +155,9 @@ public class FrameExporter { case PNG: fem = FrameExportMode.PNG; break; + case APNG: + fem = FrameExportMode.APNG; + break; case GIF: fem = FrameExportMode.GIF; break; @@ -563,6 +570,16 @@ public class FrameExporter { }, handler).run(); } break; + case APNG: + for (File foutdir : foutdirs) { + frameImages.reset(); + new RetryTask(() -> { + File f = new File(foutdir + File.separator + "frames.png"); + makeAnimatedPng(frameImages, swf.frameRate, f, evl); + ret.add(f); + }, handler).run(); + } + break; case BMP: for (File foutdir : foutdirs) { frameImages.reset(); @@ -831,6 +848,33 @@ public class FrameExporter { encoder.finish(); } + public static void makeAnimatedPng(Iterator images, float frameRate, File file, EventListener evl) throws IOException { + + List frames = new ArrayList<>(); + + int delayNumerator = 1000; + int delayDenominator = Math.round(1000 * frameRate); + int width = 0; + int height = 0; + BufferedImage backupImage = null; + while (images.hasNext()) { + BufferedImage img = images.next(); + if (img == null) { + break; + } + if (backupImage == null) { + backupImage = img; + } + width = img.getWidth(); + height = img.getHeight(); + frames.add(new AnimationFrameData(img, delayNumerator, delayDenominator)); + } + AnimatedPngData data = new AnimatedPngData(width, height, 0, backupImage, frames); + try (FileOutputStream fos = new FileOutputStream(file)) { + AnimatedPngEncoder.encode(data, fos); + } + } + public static void makeAnimatedWebP(Iterator images, float frameRate, File file, EventListener evl) throws IOException { GifToWebPConfig config = GifToWebPConfig.createLosslessConfig(); List allImages = new ArrayList<>(); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/MorphShapeExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/MorphShapeExporter.java index 938d1e1b3..bdcafd531 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/MorphShapeExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/MorphShapeExporter.java @@ -349,6 +349,13 @@ public class MorphShapeExporter { ret.add(file); }, handler).run(); break; + case APNG: + frameImages.reset(); + new RetryTask(() -> { + FrameExporter.makeAnimatedPng(frameImages, PreviewExporter.MORPH_SHAPE_ANIMATION_FRAME_RATE, file, evl); + ret.add(file); + }, handler).run(); + break; case PNG_FRAMES: case BMP_FRAMES: case WEBP_FRAMES: diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/modes/FrameExportMode.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/modes/FrameExportMode.java index 4f4dc8c5a..a56de324c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/modes/FrameExportMode.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/modes/FrameExportMode.java @@ -28,6 +28,10 @@ public enum FrameExportMode { * PNG - Portable Network Graphics */ PNG, + /** + * APNG - Animated Portable Network Graphics + */ + APNG, /** * GIF - Graphics Interchange Format */ diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/modes/MorphShapeExportMode.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/modes/MorphShapeExportMode.java index f23fa7f98..0485b5b05 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/modes/MorphShapeExportMode.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/modes/MorphShapeExportMode.java @@ -48,6 +48,10 @@ public enum MorphShapeExportMode { * PNG individual frames - Portable Network Graphics */ PNG_FRAMES(false, true), + /** + * APNG - Animated Portable Network Graphics + */ + APNG(true, false), /** * BMP start and end frames - Windows Bitmap */ diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/modes/SpriteExportMode.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/modes/SpriteExportMode.java index 7f98526b7..eb66b812a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/modes/SpriteExportMode.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/modes/SpriteExportMode.java @@ -28,6 +28,10 @@ public enum SpriteExportMode { * PNG - Portable Network Graphics */ PNG, + /** + * APNG - Animated Portable Network Graphics + */ + APNG, /** * GIF - Graphics Interchange Format */ diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/settings/MorphShapeExportSettings.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/settings/MorphShapeExportSettings.java index 147ea15ae..961dea5bb 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/settings/MorphShapeExportSettings.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/settings/MorphShapeExportSettings.java @@ -95,6 +95,7 @@ public class MorphShapeExportSettings { switch (mode) { case PNG_START_END: case PNG_FRAMES: + case APNG: return ".png"; case BMP_START_END: case BMP_FRAMES: diff --git a/src/com/jpexs/decompiler/flash/console/help.txt b/src/com/jpexs/decompiler/flash/console/help.txt index 8a9b97dfd..7f0a2b8ec 100644 --- a/src/com/jpexs/decompiler/flash/console/help.txt +++ b/src/com/jpexs/decompiler/flash/console/help.txt @@ -333,7 +333,9 @@ Pre-options: morphshape:bmp_frames - BMP frames format for MorphShapes morphshape:webp_frames - WEBP frames format for MorphShapes morphshape:webp - WEBP format for MorphShapes + morphshape:apng - APNG format for MorphShapes frame:png - PNG format for Frames + frame:apng - APNG format for Frames frame:gif - GIF format for Frames frame:avi - AVI format for Frames frame:svg - SVG format for Frames @@ -343,6 +345,7 @@ Pre-options: frame:webp - WEBP format for Frames frame:webp_animated - WEBP animated format for Frames sprite:png - PNG format for Sprites + sprite:apng - APNG format for Sprites sprite:gif - GIF format for Sprites sprite:avi - AVI format for Sprites sprite:svg - SVG format for Sprites diff --git a/src/com/jpexs/decompiler/flash/gui/locales/ExportDialog.properties b/src/com/jpexs/decompiler/flash/gui/locales/ExportDialog.properties index b98f4b735..ce130a70d 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/ExportDialog.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/ExportDialog.properties @@ -117,4 +117,7 @@ morph.duration.seconds = s morph.numberOfFrames = Number of morph frames morph.duration.invalid = Invalid morph duration. Enter positive float value in seconds. morph.numberOfFrames.invalid = Invalid number of frames. Enter positive integer value >= 2. -arrow = \ud83e\udc06 \ No newline at end of file +arrow = \ud83e\udc06 +frames.apng = APNG +sprites.apng = APNG +morphshapes.apng = APNG \ No newline at end of file