Прерывистое исключение IllegalArgumentException для ImagesService.applyTransform - PullRequest
0 голосов
/ 01 мая 2018

Я начал периодически получать IllegalArgumentException при вызове метода applyTransform в ImagesService в Google App Engine.

java.lang.IllegalArgumentException:
    at com.google.appengine.api.images.ImagesServiceImpl.convertApplicationException(ImagesServiceImpl.java:397)
    at com.google.appengine.api.images.ImagesServiceImpl.applyTransform(ImagesServiceImpl.java:88)
    at com.google.appengine.api.images.ImagesServiceImpl.applyTransform(ImagesServiceImpl.java:65)
    at com.google.appengine.api.images.ImagesService$applyTransform.call(Unknown Source)

Это мой код:

protected byte[] convertToJpeg(byte[] tiffByteArray) {
    ImagesService imagesService = ImagesServiceFactory.getImagesService()

    Image oldImage = ImagesServiceFactory.makeImage(tiffByteArray)

    Transform transform = ImagesServiceFactory.makeRotate(0)

    OutputSettings outputSettings = new OutputSettings(ImagesService.OutputEncoding.JPEG)
    outputSettings.setQuality(40)
    Image newImage = imagesService.applyTransform(transform, oldImage, outputSettings)
    return newImage.imageData
}

Есть идеи?

1 Ответ

0 голосов
/ 22 мая 2018

Я так и не понял, почему он периодически выбрасывает IllegalArgumentException для тех же самых точных вводов, но я обновил свое приложение GAE до Java 8, что позволило мне использовать ImageIO:

protected byte[] convertToJpeg(byte[] tiffByteArray) {
    final BufferedImage tif = ImageIO.read(new ByteArrayInputStream(tiffByteArray))

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()
    final ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next()
    writer.setOutput(new MemoryCacheImageOutputStream(byteArrayOutputStream))

    JPEGImageWriteParam jpegParams = new JPEGImageWriteParam(null)
    jpegParams.setCompressionMode(ImageWriteParam.MODE_EXPLICIT)
    jpegParams.setCompressionQuality(0.4f)

    writer.write(null, new IIOImage(tif, null, null), jpegParams)

    return byteArrayOutputStream.toByteArray()
}

Для TIFF это требовало дополнительной зависимости Gradle:

compile group: 'com.github.jai-imageio', name: 'jai-imageio-core', version: '1.3.1'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...