Skip to main content

[JAVA2D] loading and saving jpegs using cmyk color mode

1 reply [Last post]
Anonymous

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Chris Campbell

Hi Francisco,

The JPEGImageEncoder/Decoder classes (in the com.sun.image.codec.jpeg
package) that you're using here are not supported. Since JDK 1.4, the
Image I/O API is the supported mechanism for reading and writing
images, and the JPEG IIO plugins should be higher quality than the
older (unsupported) JPEG classes.

Using IIO, your code snippet would be greatly simplified, and I'm
hoping that there wouldn't be any problems related to CMYK:

import javax.imageio.*;
public static void main(String args[]) throws Exception {
String inputImageFileName = "front_cmyk.jpg";
String outputImageFileName = "front_" +
System.currentTimeMillis() + ".jpg";
OutputStream out = new FileOutputStream(outputImageFileName);

BufferedImage image = ImageIO.read(new File(inputImageFileName));
ImageIO.write(image, "jpeg", out);

out.close();
System.out.println("output file name: " + outputImageFileName);
}

For more information on Image I/O:
http://java.sun.com/j2se/1.5.0/docs/guide/imageio/

Thanks,
Chris

On Sep 4, 2003, at 2:46 AM, Francisco Hernandez wrote:
> I'm having a bit of trouble opening a cmyk image and saving it again as
> cmyk, it actually does save as cmyk but the colors are totally off
>
> below is the code im using, I basically just want to open a cmyk image,
> write some text and shapes onto the image (using Graphics2D), then
> save it,
> but I removed the part of the code where it writes on the image for
> simplification of the code listing here
>
>
>
> public static void main(String args[]) throws Exception {
> String inputImageFileName = "front_cmyk.jpg";
> String outputImageFileName = "front_" +
> System.currentTimeMillis() + ".jpg";
> OutputStream out = new FileOutputStream(outputImageFileName);
>
> JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(new
> FileInputStream(inputImageFileName));
> BufferedImage image = decoder.decodeAsBufferedImage();
>
> JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
> JPEGEncodeParam param =
> encoder.getDefaultJPEGEncodeParam(image.getRaster(),
> JPEGDecodeParam.COLOR_ID_CMYK);
> //JPEGEncodeParam param =
> encoder.getDefaultJPEGEncodeParam(image);
> param.setQuality(1, false);
>
> encoder.encode(image.getRaster(), param);
> //encoder.encode(image, param);
>
>
> out.close();
> System.out.println("output file name: " + outputImageFileName);
> }
>
> =======================================================================
> ====
> To unsubscribe, send email to listserv@java.sun.com and include in the
> body
> of the message "signoff JAVA2D-INTEREST". For general help, send
> email to
> listserv@java.sun.com and include in the body of the message "help".

===========================================================================
To unsubscribe, send email to listserv@java.sun.com and include in the body
of the message "signoff JAVA2D-INTEREST". For general help, send email to
listserv@java.sun.com and include in the body of the message "help".