2013-06-12 10 views
3

입니다. 저장할 수있는 방법은 이미지와 관련된 exif 데이터를 파괴하는 것입니다.PIL을 사용하여 이미지의 크기를 조정 (축소판)하려고 할 때 PIL을 사용하여 이미지의 exif 데이터 크기를 조정하는 방법은

이미지의 크기를 조정하고 이미지 버퍼로 클라우드에 업로드합니다.

file_path = '...' 
file_name = '...' 
im = Image.open(file_path) 
size =(512,521) 
im.thumbnail(size, Image.ANTIALIAS) 
thumbnail_buf_string = StringIO.StringIO() 
file_save_extension = 'JPEG' 
im.save(thumbnail_buf_string, format=file_save_extension) 
upload_to_cloud('512_' + file_name , thumbnail_buf_string.getvalue()) 

크기가 조정 된 이미지에는 exif 데이터가 없습니다.

답변

4

참고 : 필자는 아직이 작업을 수행하지 않았지만 PIL은 exif 태그를 읽을 수만 있지만 작성할 수는 없습니다. 미리보기 이미지에 태그를 쓰려면 gexiv2 또는 pyexiv2가 필요할 것입니다.

업데이트 : 궁금해하고 직접 사용해 보았습니다. D 내가 맞으면 더 이상 수정하지 않고 메타 데이터 만 복사하려고합니다.

이 여전히 조잡하지만 작동하는 것 같다 : BTW

import os 
import Image 
import pyexiv2 

fp = '/home/klaus/workspace' 
fn = 'img_2380.jpg' 

full_path = os.path.join(fp, fn) 
print full_path 

im = Image.open(full_path) 
size = 512, 512 
im.thumbnail(size, Image.ANTIALIAS) 
im.save('bla.jpg', 'JPEG') 

oldmeta = pyexiv2.ImageMetadata(full_path) 
oldmeta.read() 
# read metadata of the original file 

newmeta = pyexiv2.ImageMetadata('bla.jpg') 
newmeta.read() 
# read metadata of the new file 
# yes, there aren't any, but this is crucial! 
# you need this class as the target for copying! 

oldmeta.copy(newmeta) 

newmeta.write() 
# don't forget to write the data to the new file 

: 흥미로운 질문을 주셔서 감사합니다!

+0

소리가 나는데, 나는 pyexiv2를 시도했다. http://stackoverflow.com/a/17059383/658976,하지만 나는 imagebuffer를 사용해야한다. – Jisson

+0

gexiv2를 설치하고 exif 데이터를 편집 할 수는 있지만 메모리의 문자열 이미지의 편집 exif는 어떻게 편집 할 수 있습니까? 예 : im.save (thumbnail_buf_string, format = file_save_extension) – Jisson

+0

라이트입니다. 원본 이미지의 exif 데이터를 디스크에 저장하여 크기를 조정할 수 있습니까? exif를 크기 조정 된 이미지 자체의 이미지 인스턴스로 설정하는 것을 의미합니다. 가능하지 않다면 당신이 제안한대로 할 수있는 유일한 방법이라고 생각합니다. 감사합니다. – Jisson