mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-04 23:45:09 +00:00
do not add image compression=lossless tag when the "original" image (in swf) was definebitsjpeg3/4 with jpeg data+alpha channel
This commit is contained in:
@@ -115,6 +115,11 @@ public class DefineBitsJPEG2Tag extends ImageTag implements AloneTag {
|
||||
|
||||
@Override
|
||||
public ImageFormat getImageFormat() {
|
||||
return getOriginalImageFormat();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImageFormat getOriginalImageFormat() {
|
||||
return ImageTag.getImageFormat(imageData);
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ import java.util.logging.Logger;
|
||||
*
|
||||
* @author JPEXS
|
||||
*/
|
||||
@SWFVersion(from = 3) //Note: GIF and PNG since version
|
||||
@SWFVersion(from = 3) //Note: GIF and PNG since version
|
||||
public class DefineBitsJPEG3Tag extends ImageTag implements AloneTag {
|
||||
|
||||
public static final int ID = 35;
|
||||
@@ -158,13 +158,18 @@ public class DefineBitsJPEG3Tag extends ImageTag implements AloneTag {
|
||||
|
||||
@Override
|
||||
public ImageFormat getImageFormat() {
|
||||
ImageFormat fmt = ImageTag.getImageFormat(imageData);
|
||||
ImageFormat fmt = getOriginalImageFormat();
|
||||
if (fmt == ImageFormat.JPEG && bitmapAlphaData.getLength() > 0) {
|
||||
fmt = ImageFormat.PNG; //transparency
|
||||
}
|
||||
return fmt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImageFormat getOriginalImageFormat() {
|
||||
return ImageTag.getImageFormat(imageData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getOriginalImageData() {
|
||||
if (bitmapAlphaData.getLength() == 0) { // No alpha
|
||||
|
||||
@@ -163,13 +163,18 @@ public class DefineBitsJPEG4Tag extends ImageTag implements AloneTag {
|
||||
|
||||
@Override
|
||||
public ImageFormat getImageFormat() {
|
||||
ImageFormat fmt = ImageTag.getImageFormat(imageData);
|
||||
ImageFormat fmt = getOriginalImageFormat();
|
||||
if (fmt == ImageFormat.JPEG && bitmapAlphaData.getLength() > 0) {
|
||||
fmt = ImageFormat.PNG; //transparency
|
||||
}
|
||||
return fmt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImageFormat getOriginalImageFormat() {
|
||||
return ImageTag.getImageFormat(imageData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getOriginalImageData() {
|
||||
if (bitmapAlphaData.getLength() == 0) { // No alpha
|
||||
|
||||
@@ -222,6 +222,11 @@ public class DefineBitsLossless2Tag extends ImageTag implements AloneTag {
|
||||
return ImageFormat.PNG;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImageFormat getOriginalImageFormat() {
|
||||
return ImageFormat.PNG;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getOriginalImageData() {
|
||||
return null;
|
||||
|
||||
@@ -217,6 +217,11 @@ public class DefineBitsLosslessTag extends ImageTag implements AloneTag {
|
||||
return ImageFormat.PNG;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImageFormat getOriginalImageFormat() {
|
||||
return ImageFormat.PNG;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getOriginalImageData() {
|
||||
return null;
|
||||
|
||||
@@ -108,6 +108,11 @@ public class DefineBitsTag extends ImageTag implements TagChangedListener {
|
||||
return ImageFormat.JPEG;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImageFormat getOriginalImageFormat() {
|
||||
return ImageFormat.JPEG;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getOriginalImageData() {
|
||||
if (swf.getJtt() != null) {
|
||||
|
||||
@@ -78,6 +78,8 @@ public abstract class ImageTag extends CharacterTag implements DrawableTag {
|
||||
|
||||
public abstract ImageFormat getImageFormat();
|
||||
|
||||
public abstract ImageFormat getOriginalImageFormat();
|
||||
|
||||
public boolean importSupported() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1473,8 +1473,10 @@ public class XFLConverter {
|
||||
switch (format) {
|
||||
case PNG:
|
||||
case GIF:
|
||||
writer.writeAttribute("useImportedJPEGData", false);
|
||||
writer.writeAttribute("compressionType", "lossless");
|
||||
if (imageTag.getOriginalImageFormat() != ImageFormat.JPEG) {
|
||||
writer.writeAttribute("useImportedJPEGData", false);
|
||||
writer.writeAttribute("compressionType", "lossless");
|
||||
}
|
||||
writer.writeAttribute("originalCompressionType", "lossless");
|
||||
break;
|
||||
case JPEG:
|
||||
|
||||
Reference in New Issue
Block a user