From d52522fb809800a98076a551c2c051128045f9fa Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 6 May 2021 00:12:19 +0200 Subject: [PATCH] #483 Minor optimization (cherry picked from commit 06bcf22242504361ef73cc9d369b235e6034d7fa) --- .../twelvemonkeys/imageio/plugins/psd/PSDImageWriter.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageWriter.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageWriter.java index 410738a0..aa869b66 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageWriter.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDImageWriter.java @@ -131,14 +131,15 @@ public final class PSDImageWriter extends ImageWriterBase { imageOutput.skipBytes(byteCounts.length * (largeFormat ? 4 : 2)); // TODO: Loop over tiles? + Raster tile = sampleModel.getTransferType() == DataBuffer.TYPE_INT && sampleModel instanceof SinglePixelPackedSampleModel + ? RasterUtils.asByteRaster(image.getTile(0, 0)) + : image.getTile(0, 0); + for (int channel = 0; channel < channels; channel++) { // TODO: Alpha issues: // 1. Alpha channel is written (but not read, because there are no layers, and alpha is considered present only if layer count is negative) // - Can we write a small hidden layer, just to have -1 layers? // 2. Alpha needs to be premultiplied against white background (to avoid inverse halo) - Raster tile = sampleModel.getTransferType() == DataBuffer.TYPE_INT && sampleModel instanceof SinglePixelPackedSampleModel - ? RasterUtils.asByteRaster(image.getTile(0, 0)) - : image.getTile(0, 0); Raster channelRaster = tile.createChild(0, 0, width, height, 0, 0, new int[] {channel}); switch (bits) {