이 작업을 수행 할 분명한 방법이 있습니까? 나는 엄지 손톱을 만들려고하고있다.PIL을 사용하여 이미지의 크기를 조정하고 가로 세로 비율을 어떻게 유지합니까?
답변
최대 크기를 정의하십시오. 그런 다음 min(maxwidth/width, maxheight/height)
을 사용하여 크기 조정 비율을 계산하십시오.
적절한 크기는 oldsize*ratio
입니다.
물론 이것을 수행하는 라이브러리 메소드가 있습니다. Image.thumbnail
메소드.
아래는 PIL documentation의 (편집 된) 예입니다.
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
** [랜디 Syring]에 의해 코멘트 (http://stackoverflow.com/users/182111/randy-syring) ** : 'Image.ANTIALIAS'을'thumbnail()'호출에 추가하십시오. 문서에서 매우 권장되며, 이것이 최상위 답변이므로 모범 사례를 따라야합니다. 즉,'im.thumbnail (size)'를'im.thumbnail (size, Image.ANTIALIAS)'로 대체하십시오. – Anne
필자가 말했듯이이 예제는 pil 문서에서 나온 것이고 예제 (여전히)는 앤티 앨리어스 플래그를 사용하지 않습니다. 아마 대부분의 사람들이 원하는 것이기 때문에, 나는 그것을 추가했다. – gnud
PIL은 새 이미지의 높이를 주어진 크기 (여기서는 128)로 설정하고 가로 세로 비율을 유지하기 위해 너비를 계산합니다. 높이 대신 너비를 고정시키는 방법이 있습니까? 어쩌면 내가 별도의 질문으로이 질문을 할 것이다. – eugene
동일한 가로 세로 비율을 유지하려고한다면 원래 크기의 몇 퍼센트 크기로 조정하지 않겠습니까? 예를 들어
절반 원래 크기
half = 0.5
out = im.resize([int(half * s) for s in im.size])
이미지의 크기가 다양하고 크기 조정 결과가 균일 한 크기 여야합니다. – Steen
300 개 픽셀 폭 및 새로운 폭에 비례하는 높이 PIL (파이썬 이미징 라이브러리)를 사용하여 이미지 (somepic.jpg)를 크기를 조절한다이 스크립트 . 이는 300 픽셀이 원래 너비 (img.size [0])의 백분율을 결정한 다음 원래 높이 (img.size [1])에 해당 백분율을 곱하여 결정합니다. "basewidth"를 다른 숫자로 변경하여 이미지의 기본 너비를 변경하십시오.
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')
Zope에서이 스크립트를 외부 메서드로 사용하는 경우 네임 스페이스 충돌을 피하기 위해 "PIL 가져 오기 이미지"라는 줄이 필요합니다 Zope의 "Image". – tomvon
감사합니다. PIL.Image.ANTIALIAS' –
이 코드는 0 바이트의 출력 파일'''sompic.jpg''를 얻습니다. 왜 이런 일이 생길까요? 파이썬 3.x를 사용하고 있습니다. –
PIL의 축소판 방법은 모든 비율 문제를 제거하므로 사용하는 것이 좋습니다.
한 가지 중요한 힌트하지만 기본적으로
im.thumbnail(size,Image.ANTIALIAS)
와
im.thumbnail(size)
교체, PIL은 좋은 성능 결과 크기를 조정하지만, 낮은 품질의 Image.NEAREST 필터를 사용합니다.
PIL 이미 이미지
img = ImageOps.fit(img, size, Image.ANTIALIAS)
그냥 이미지를 자르면 가로 세로 비율이 유지되지 않습니다. – Radu
내 추한 예를자를 수있는 옵션이 있습니다.
함수는 "pic [0-9a-z]. [extension]"과 같은 파일을 가져오고, 120x120 크기로 조정하고, 섹션을 가운데로 이동하고 "ico [0-9a-z]"에 저장합니다.[확장] "세로 및 가로로 작동합니다 @tomvon에 본사를 둔
def imageResize(filepath):
from PIL import Image
file_dir=os.path.split(filepath)
img = Image.open(filepath)
if img.size[0] > img.size[1]:
aspect = img.size[1]/120
new_size = (img.size[0]/aspect, 120)
else:
aspect = img.size[0]/120
new_size = (120, img.size[1]/aspect)
img.resize(new_size).save(file_dir[0]+'/ico'+file_dir[1][3:])
img = Image.open(file_dir[0]+'/ico'+file_dir[1][3:])
if img.size[0] > img.size[1]:
new_img = img.crop((
(((img.size[0])-120)/2),
0,
120+(((img.size[0])-120)/2),
120
))
else:
new_img = img.crop((
0,
(((img.size[1])-120)/2),
120,
120+(((img.size[1])-120)/2)
))
new_img.save(file_dir[0]+'/ico'+file_dir[1][3:])
, 나는 다음과 같은 사용을 완료 :
크기 조정 폭 :
new_width = 680
new_height = new_width * height/width
크기 조절 높이 :
new_height = 680
new_width = new_height * width/height
다음으로 :
img = img.resize((new_width, new_height), Image.ANTIALIAS)
from PIL import Image
from resizeimage import resizeimage
def resize_file(in_file, out_file, size):
with open(in_file) as fd:
image = resizeimage.resize_thumbnail(Image.open(fd), size)
image.save(out_file)
image.close()
resize_file('foo.tif', 'foo_small.jpg', (256, 256))
내가이 라이브러리를 사용
pip install python-resize-image
from PIL import Image
img = Image.open('/your iamge 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 u want ,*.png,*jpg,*.gif
- 1. 크기가 조정 된 창의 가로 세로 비율을 어떻게 유지합니까?
- 2. Firefox는 이미지의 가로 세로 비율을 무시합니다.
- 3. 파이썬 PIL 크기 조정은 가로 세로 비율을 유지합니까?
- 4. PIL을 사용하여 회전 EXIF 정보의 크기를 조정하고 파일에 적용하는 방법?
- 5. 어떻게 가로 세로 비율을 잃지 않고 정사각형 이미지의 비율을 조정합니까 (레이아웃이 사각형이 아니더라도)
- 6. 로딩시 펜촉으로 창/이미지의 크기를 조정하고 싶습니다.
- 7. 가로 세로 비율을 찾는 가장 좋은 방법
- 8. 이미지 크기를 조절하면서 비율을 유지합니다.
- 9. HTML5 캔버스로 ... 비율을 어떻게 유지합니까?
- 10. 사용자의 가로 세로 비율을 알고 모니터
- 11. 이미지의 크기를 조정하고 비율로 간격을 채우십시오.
- 12. CSS를 사용하여 배경 이미지의 크기를 조정하고 플로팅하는 방법은 무엇입니까?
- 13. 가로 세로 비율을 유지하면서 GD로 이미지 크기 조정 및 자르기
- 14. 순수 HTML/CSS로 비율을 유지하면서 이미지의 크기를 조정하는 방법은 무엇입니까?
- 15. PIL을 사용하여 이미지의 가운데에 텍스트를 그립니다.
- 16. CSS를 사용하여 div 내에서 이미지의 비율을 조정하고 위치를 재 지정 하시겠습니까?
- 17. 가로 세로 비율을 유지하지 않는 렌더 필터를 만드는 방법은 무엇입니까?
- 18. 가로 세로 비율을 유지하면서 가능한 한 이미지를 크게 만드는 방법
- 19. Crystal Reports에서 이미지의 크기를 조정하고 위치를 지정하는 방법
- 20. 브라우저 크기를 조정할 때 원본 캔버스 가로 세로 비율 유지
- 21. Ruby/Rails에서 이미지의 크기를 조정하고 워터 마킹 할 수 있습니까?
- 22. pyCairo : 이미지의 크기를 조정하고 위치를 지정하는 방법은 무엇입니까?
- 23. 가로 세로 비율을 유지하면서 크기가 조정 된 이미지를 웹 페이지에 표시하는 방법은 무엇입니까?
- 24. php를 사용하여 다른 도메인의 이미지 크기를 조정하고 표시하는 방법은 무엇입니까?
- 25. PIL을 사용하여 RGB에서 HSV로 변환
- 26. 가로 세로 및 가로 정렬
- 27. 아이 패드 - 세로 및 가로
- 28. Silverlight Image 세로 크기 조정 이미지의 경우 늘이기 = "균일"실패
- 29. NavigationController 가로 및 세로
- 30. 장치 회전 : 세로 - 가로
이 질문은 꽤 오래된하지만 유용하고, 베개 오히려 이것 좀보세요 베개 기반 튜토리얼, 선호하기 때문에 : HTTP : //pillow.readthedocs.org/en/latest/handbook/tutorial.html#create-jpeg-thumbnails – Wtower
이미지 크기를 조정할 수있는 작은 라이브러리를 만들었습니다. 어떤 도움이 될 수 있습니다. https://github.com/ charlesthk/python-resize-image – Charlesthk