diff options
author | dcommander <dcommander@632fc199-4ca6-4c93-a231-07263d6284db> | 2011-03-17 07:39:25 +0000 |
---|---|---|
committer | dcommander <dcommander@632fc199-4ca6-4c93-a231-07263d6284db> | 2011-03-17 07:39:25 +0000 |
commit | 1005a848a27b8b9386e8f0a11812746427ce3c86 (patch) | |
tree | b0bccaaaa4147a895d098f60c72e264c0c29b70e /java/org/libjpegturbo/turbojpeg/TJDecompressor.java | |
parent | 4edcda4f8727e9643b2e3a7fa536b33698d27a96 (diff) |
Fix compression from/decompression to TYPE_INT_{RGB|BGR} BufferedImages on big endian platforms
git-svn-id: svn://svn.code.sf.net/p/libjpeg-turbo/code/trunk@520 632fc199-4ca6-4c93-a231-07263d6284db
Diffstat (limited to 'java/org/libjpegturbo/turbojpeg/TJDecompressor.java')
-rw-r--r-- | java/org/libjpegturbo/turbojpeg/TJDecompressor.java | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/java/org/libjpegturbo/turbojpeg/TJDecompressor.java b/java/org/libjpegturbo/turbojpeg/TJDecompressor.java index 19f0c94..79021fb 100644 --- a/java/org/libjpegturbo/turbojpeg/TJDecompressor.java +++ b/java/org/libjpegturbo/turbojpeg/TJDecompressor.java @@ -29,6 +29,7 @@ package org.libjpegturbo.turbojpeg; import java.awt.image.*; +import java.nio.*; /** * TurboJPEG decompressor @@ -378,15 +379,25 @@ public class TJDecompressor { if(scaledWidth != desiredWidth || scaledHeight != desiredHeight) throw new Exception("BufferedImage dimensions do not match a scaled image size that TurboJPEG is capable of generating."); int pixelFormat; boolean intPixels = false; + if(byteOrder == null) + byteOrder = ByteOrder.nativeOrder(); switch(dstImage.getType()) { case BufferedImage.TYPE_3BYTE_BGR: pixelFormat = TJ.PF_BGR; break; case BufferedImage.TYPE_BYTE_GRAY: pixelFormat = TJ.PF_GRAY; break; case BufferedImage.TYPE_INT_BGR: - pixelFormat = TJ.PF_RGBX; intPixels = true; break; + if(byteOrder == ByteOrder.BIG_ENDIAN) + pixelFormat = TJ.PF_XBGR; + else + pixelFormat = TJ.PF_RGBX; + intPixels = true; break; case BufferedImage.TYPE_INT_RGB: - pixelFormat = TJ.PF_BGRX; intPixels = true; break; + if(byteOrder == ByteOrder.BIG_ENDIAN) + pixelFormat = TJ.PF_XRGB; + else + pixelFormat = TJ.PF_BGRX; + intPixels = true; break; default: throw new Exception("Unsupported BufferedImage format"); } @@ -492,4 +503,5 @@ public class TJDecompressor { protected int jpegWidth = 0; protected int jpegHeight = 0; protected int jpegSubsamp = -1; + private ByteOrder byteOrder = null; }; |