2011-09-23 3 views
2

클라이언트에서 가져온 일부 이미지를 관리해야합니다. 지금까지GoogleAppEngine : 큰 이미지의 이미지 크기 조정 실패 방지 방법

, 내 코드는 다음

Image oldImage = null; 
    try { 
     oldImage = ImagesServiceFactory.makeImage(imageBuf); 
    } catch (Exception e) { 
     log.severe("Cannot make the image due to " + e); 
     return; 
    } 
    int newWidth = ??; //how can I guess this value to reach a size < 1MB?? 
    int newHeight= ??; //how can I guess this value to reach a size < 1MB?? 
    Transform resize = ImagesServiceFactory.makeResize(newWidth, newHeight); 
    Image newImage = imagesService.applyTransform(resize, oldImage); //Exception if > 1MB 

이러한 이미지는 GAE (1 MB)의 크기 제한을 초과 할 수 있습니다, 그리고 크기를 조정하거나 도달하기 위해 그들을 자르고 싶습니다 크기는 1MB 미만 (예 : 950kB)입니다.

어떻게하면이 목표를 달성 할 수 있습니까?

이미지의 크기를 조정해야하는 정확한 너비 인 &을 모르므로 직접 resize 메서드를 사용할 수 없습니다.

또한 그림의 인코딩 (png, jpeg 등)에 따라 고정 된 높이와 너비를 사용하여 이미지의 크기가 다를 수 있습니다.

이 문제를 해결하는 방법에 대한 효율적인 아이디어가 없습니다. 솔루션을 볼 수있는 유일한 방법은 좋은 크기의 이미지가 나올 때까지 계속 저, 저 치수로 시도하는 것입니다. 그러나 이는 분명히 용납되지 않습니다. 공연 조건 ...

제발, 도와주세요 !! 당신이 blobstore에 이미지를 저장하는 경우

당신에게

안녕

cghersi

+0

왜 이미지를 특정 파일 크기로 만들 필요가 있습니까? API 호출 제한 때문인 경우 bdonlan이 가리키는대로 Blobstore를 사용할 수 있습니다. –

답변

2

대단히 감사합니다, 당신이 할 수있는 당신이 getServingUrl() 기능을 사용하여, 당신의 애플리케이션 서버를 통해 이미지를 전달 수있는 것보다 resize much larger images. 이것은 API를 통해 데이터를 전달하지 않으므로 API 응답 크기 제한에 의해 제한되지 않습니다.