2

我正在尝试了解如何处理 GAE Image 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 图像的字节数组,或者最坏的情况不是图像。

  • 如果字节数组不是图像数据,我的应用程序需要捕获什么异常?
  • 如果字节数组是图像,但我的应用程序不知道确切的类型,应该怎么做才能让 GAE 图像服务自动将其转换为 JPEG。

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

4

2 回答 2

6
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();
于 2013-09-11T08:35:51.507 回答
0

您可以检查magic number任何图像,并据此采取行动。以下链接将为您提供幻数列表,您可以在实用程序中使用它以备将来使用

图像幻数

于 2013-09-11T07:31:35.187 回答