2012-12-09 7 views
4

getServingUrl은 AppEngine 데이터 저장소에서 이미지를 가져 오는 편리한 방법이지만 이미지를 자동 변환하려는 것으로 보입니다. 예를 들어ImageServices getServingUrl을 사용하여 원본 이미지 가져 오기

,이 할 경우 :

ServingUrlOptions servingUrlOptions = ServingUrlOptions.Builder.withBlobKey(blobKey); 
String payload = "{ \"image\" : \"" + mImagesService.getServingUrl(servingUrlOptions) + "\" }"; 

내가 크기가 조정 된 크기와 이미지에 URL을 얻을. 예를 들어, 960 x 640 이미지를 업로드하면 기본 URL이 나를 512 x 341 이미지로 안내합니다.

따라서 URL에 변형을 적용하고 s960을 설정하십시오. 이렇게하면 960 x 640 이미지가 반환되지만 이미지가 원본과 비교하면 이미지에 아티팩트가 표시 될 수 있습니다.

Image image = ImagesServiceFactory.makeImageFromBlob(blobKey); 
Transform noOpCrop = ImagesServiceFactory.makeCrop(0, 0, 1, 1); 
image = mImagesService.applyTransform(noOpCrop, image);      
LOGGER.info("Stored image " + image.getWidth() + ", " + image.getHeight()); 

실제로이 원래 바이트를 포함 또는 있는지 못 봤어 :

서버는 적절하게 나는 원래 크기로 자르기를하는 here을 발견하는 기술 덕분에 이미지를 저장한다 아닙니다.하지만 실제로 중요하지는 않습니다. 왜냐하면 바이트를 다시 보내야하기 때문에 데이터를 저장소에서 직접 가져 와서 서블릿을 제공하는 사용자 정의 이미지의 페이로드로 설정할 수 있기 때문입니다.

필자는 질문보다 기능 요청과 비슷하게 들린다는 것을 알고 있으므로 사용자 지정 서블릿을 사용하는 것보다 원본 이미지를 제공 할 때 더 나은 솔루션이 있습니까?

+0

자바 대신 PHP를 사용하면이 게시물을 참조 할 수 있습니다. http://stackoverflow.com/questions/37646849/how-can-we-use-firebase-image-file-and-resize-them-using-get-serving -url/37673504 # 37673504 –

답변

8

생성 된 URL의 끝에 =s0을 추가하여 원본 이미지를 얻을 수 있습니다.

기본적으로 매개 변수를 추가하지 않으면 최대 512px 크기가됩니다 (=s512을 추가하는 것과 같습니다). 문서 및 옵션에 getServingUrl에 대한 자세한 내용을 볼 수 있습니다.

+1

흠, 로컬로 실행하고 있는데 다음과 같이 표시됩니다. "오류 500 ApplicationError : 2 : 잘못된 크기 조정 : 너비와 높이를 모두 0으로 설정할 수 없습니다." GAE 1.7.3을 사용하고 있습니다 ... –

+0

@BenFlynn hmm .. Python에서 작동합니다 .. 거기에서 작동하는지 확인하기 위해 배포 할 수 있습니까?! – Lipis

+0

@BenFlynn http://goo.gl/R69zu이 URL에 매개 변수를 추가해보십시오. = s0, = s128, = s256-c – Lipis

관련 문제