aboutsummaryrefslogtreecommitdiff
path: root/java/org/libjpegturbo/turbojpeg/TJDecompressor.java
diff options
context:
space:
mode:
authordcommander <dcommander@632fc199-4ca6-4c93-a231-07263d6284db>2011-03-17 07:39:25 +0000
committerdcommander <dcommander@632fc199-4ca6-4c93-a231-07263d6284db>2011-03-17 07:39:25 +0000
commit1005a848a27b8b9386e8f0a11812746427ce3c86 (patch)
treeb0bccaaaa4147a895d098f60c72e264c0c29b70e /java/org/libjpegturbo/turbojpeg/TJDecompressor.java
parent4edcda4f8727e9643b2e3a7fa536b33698d27a96 (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.java16
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;
};