XGC-93: fix performancy penalty caused by excessive DeflaterOutputStream.write(byte) calls, thanks to Andre Klemann
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/commons/trunk@1712525 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/java/org/apache/xmlgraphics/ps/ImageEncodingHelper.java b/src/java/org/apache/xmlgraphics/ps/ImageEncodingHelper.java
index 97986b6..2288e4d 100644
--- a/src/java/org/apache/xmlgraphics/ps/ImageEncodingHelper.java
+++ b/src/java/org/apache/xmlgraphics/ps/ImageEncodingHelper.java
@@ -323,11 +323,13 @@
byte[] bytes = ((DataBufferByte) buffer).getData();
// see determineEncodingColorModel() to see why we permute B and R here
if (isBGR) {
+ byte[] bytesPermutated = new byte[bytes.length];
for (int i = 0; i < bytes.length; i += 3) {
- out.write(bytes[i + 2]);
- out.write(bytes[i + 1]);
- out.write(bytes[i]);
+ bytesPermutated[i] = bytes[i+2];
+ bytesPermutated[i+1] = bytes[i+1];
+ bytesPermutated[i+2] = bytes[i];
}
+ out.write(bytesPermutated);
} else {
out.write(bytes);
}