use of org.apache.pdfbox.pdmodel.graphics.color.PDDeviceCMYK in project pdfbox by apache.
the class JPEGFactory method createFromByteArray.
/**
* Creates a new JPEG Image XObject from a byte array containing JPEG data.
*
* @param document the document where the image will be created
* @param byteArray bytes of JPEG image
* @return a new Image XObject
*
* @throws IOException if the input stream cannot be read
*/
public static PDImageXObject createFromByteArray(PDDocument document, byte[] byteArray) throws IOException {
// copy stream
ByteArrayInputStream byteStream = new ByteArrayInputStream(byteArray);
// read image
Raster raster = readJPEGRaster(byteStream);
byteStream.reset();
PDColorSpace colorSpace;
switch(raster.getNumDataElements()) {
case 1:
colorSpace = PDDeviceGray.INSTANCE;
break;
case 3:
colorSpace = PDDeviceRGB.INSTANCE;
break;
case 4:
colorSpace = PDDeviceCMYK.INSTANCE;
break;
default:
throw new UnsupportedOperationException("number of data elements not supported: " + raster.getNumDataElements());
}
// create PDImageXObject from stream
PDImageXObject pdImage = new PDImageXObject(document, byteStream, COSName.DCT_DECODE, raster.getWidth(), raster.getHeight(), 8, colorSpace);
if (colorSpace instanceof PDDeviceCMYK) {
COSArray decode = new COSArray();
decode.add(COSInteger.ONE);
decode.add(COSInteger.ZERO);
decode.add(COSInteger.ONE);
decode.add(COSInteger.ZERO);
decode.add(COSInteger.ONE);
decode.add(COSInteger.ZERO);
decode.add(COSInteger.ONE);
decode.add(COSInteger.ZERO);
pdImage.setDecode(decode);
}
return pdImage;
}
Aggregations