Java 用GAE图像API实现图像转换

Java 用GAE图像API实现图像转换,java,image,google-app-engine,image-processing,Java,Image,Google App Engine,Image Processing,我试图了解如何处理GAE图像api,自动将图像格式转换为JPEG 这是我的密码: byte[] oldImageData = model.getImage(); Image oldImage = ImagesServiceFactory.makeImage(oldImageData); LOG.info("Image format - " + oldImage.getFormat().toString()); model.setImage(oldImage.getImageData()); //

我试图了解如何处理GAE图像api,自动将图像格式转换为JPEG

这是我的密码:

byte[] oldImageData = model.getImage();
Image oldImage = ImagesServiceFactory.makeImage(oldImageData);
LOG.info("Image format - " + oldImage.getFormat().toString());
model.setImage(oldImage.getImageData()); // byte array must be JPEG
这里的
oldImageData
字节数组可以是JPEG或PNG图像的字节数组,或者在最坏的情况下不是图像

  • 如果字节数组不是图像数据,我的应用程序会出现什么异常 需要抓住吗
  • 如果字节数组是image,但我的应用程序不知道确切的类型, 应采取哪些措施使GAE映像服务自动运行 将其转换为JPEG格式

最后,我需要做的是确保
oldImageData
JPEG
图像的字节数组。

您可以检查任何图像的
幻数,并在此基础上采取行动。以下链接将为您提供魔法数字列表,您可以在实用程序中使用该列表,以备将来使用


同样的问题:在dev服务器(1.9.17)上从PNG转换为JPEG时,颜色会失真。不过,在生产服务器上,颜色似乎很好。示例:alpha层中的颜色在转换为JPEG时很好,只有背景变为黑色。
ImagesService imagesService = ImagesServiceFactory.getImagesService();
Image oldImage = ImagesServiceFactory.makeImage(oldImageData);

// this throws an exception if data is not image or unsupported format
// you can wrap this in try..catch and act accordingly 
oldImage.getFormat();

// this is a dummy transform that does nothing
Transform transform = ImagesServiceFactory.makeCrop(0.0, 0.0, 1.0, 1.0);

// setting the output to JPEG
OutputSettings outputSettings = new OutputSettings(ImagesService.OutputEncoding.JPEG);
outputSettings.setQuality(100);

// apply dummy transform and output settings
Image newImage = imagesService.applyTransform(transform, oldImage, outputSettings);

byte[] newImageData = newImage.getImageData();