2013-09-11 3 views
2

Я пытаюсь понять, как обращаться с GAE Image api, чтобы автоматически преобразовывать формат изображения в JPEG.Преобразование изображений с помощью GAE Image API

Вот мой код:

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 изображения.

ответ

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(); 
+0

Существует одна проблема с этим, хотя ... изображение приобретает розовый оттенок. .. – xybrek

+0

Такая же проблема: цвета искажаются при преобразовании из PNG в JPEG на сервере dev (1.9.17). Тем не менее, на производственном сервере цвета кажутся прекрасными. Пример: цвета в [это изображение в PNG Википедии] (http://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png) с альфа-слоем прекрасны при преобразовании в JPEG, только фон становится черным. – oliverdm

0

Вы можете проверить magic number любого изображения и на основе того, что вы можете предпринять. Следующая ссылка даст вам список магических чисел, и вы можете использовать это в УТИЛИТОЙ для будущей цели

image magic number

Смежные вопросы