내가 누락 된 확실한 방법이 있습니까? 미리보기 이미지를 만들려고합니다.
답변
최대 크기를 정의하십시오. 그런 다음을 사용하여 크기 조정 비율을 계산하십시오 min(maxwidth/width, maxheight/height)
.
적절한 크기는 oldsize*ratio
입니다.
물론 이것을 수행하는 라이브러리 메소드가 있습니다 : method Image.thumbnail
.
아래는 PIL 문서 의 (편집 된) 예입니다 .
import os, sys
import Image
size = 128, 128
for infile in sys.argv[1:]:
outfile = os.path.splitext(infile)[0] + ".thumbnail"
if infile != outfile:
try:
im = Image.open(infile)
im.thumbnail(size, Image.ANTIALIAS)
im.save(outfile, "JPEG")
except IOError:
print "cannot create thumbnail for '%s'" % infile
답변
이 스크립트는 PIL (Python Imaging Library)을 사용하여 이미지 (somepic.jpg)의 크기를 300 픽셀의 너비와 새 너비에 비례하는 높이로 조정합니다. 300 픽셀이 원래 너비 인 비율 (img.size [0])을 결정한 다음 원래 높이 (img.size [1])에 해당 백분율을 곱하면됩니다. 이미지의 기본 너비를 변경하려면 “기준 너비”를 다른 숫자로 변경하십시오.
from PIL import Image
basewidth = 300
img = Image.open('somepic.jpg')
wpercent = (basewidth/float(img.size[0]))
hsize = int((float(img.size[1])*float(wpercent)))
img = img.resize((basewidth,hsize), Image.ANTIALIAS)
img.save('sompic.jpg')
답변
또한 PIL의 썸네일 방법을 사용하는 것이 좋습니다. 왜냐하면 모든 비율 번거 로움을 제거하기 때문입니다.
그러나 한 가지 중요한 힌트 : 바꾸기
im.thumbnail(size)
와
im.thumbnail(size,Image.ANTIALIAS)
기본적으로 PIL은 크기 조정을 위해 Image.NEAREST 필터를 사용하여 성능은 좋지만 품질은 떨어집니다.
답변
@tomvon을 기반으로 다음 사용을 마쳤습니다 (사례 선택).
a) 높이 조정 ( 새 너비를 알고 있으므로 새 높이가 필요합니다 )
new_width = 680
new_height = new_width * height / width
b) 너비 조정 크기 ( 새 높이를 알고 있으므로 새 너비가 필요합니다 )
new_height = 680
new_width = new_height * width / height
그런 다음 :
img = img.resize((new_width, new_height), Image.ANTIALIAS)
답변
PIL에는 이미 이미지를 자르는 옵션이 있습니다
img = ImageOps.fit(img, size, Image.ANTIALIAS)
답변
from PIL import Image
img = Image.open('/your image path/image.jpg') # image extension *.png,*.jpg
new_width = 200
new_height = 300
img = img.resize((new_width, new_height), Image.ANTIALIAS)
img.save('output image name.png') # format may what you want *.png, *jpg, *.gif
답변
동일한 종횡비를 유지하려는 경우 원래 크기의 일정 비율로 크기를 조정하지 않습니까?
예를 들어, 원래 크기의 절반
half = 0.5
out = im.resize( [int(half * s) for s in im.size] )