파이썬 이미징 대안
-
10-07-2019 - |
문제
사진을 찍기 위해 몇 가지 간단한 작업을 수행 해야하는 파이썬 코드가 있습니다. 나는 PIL을 사용했고 Resailt/Resize 결과는 끔찍합니다. 나는 imageMagick을 사용했고 인터페이스와 명령은 고양이를 상자에 포장 한 다음 키보드에 계단 세트를 반복적으로 던져 버렸습니다.
나는 단순하고 고품질의 이미지 변환을 수행하기 위해 Python과 함께 사용할 수있는 Pil 또는 Imagemagick이 아닌 것을 찾고 있습니다. 그 문제에 대해서는 명령 줄 인터페이스가 양호한 경우 파이썬 바인딩을 가질 필요조차 없습니다.
아, 그리고 그것은 비교적 플랫폼의 불가지론이어야하며, 우리의 생산 서버는 Linux이지만 일부 개발자는 Windows에서 개발됩니다. 라이브러리로 사용하려면 바보 같은 GUI 코드를 설치할 필요가 없습니다.
해결책
나는 PIL을 사용했고 Resailt/Resize 결과는 끔찍합니다.
그들은 당신만큼 오랫동안이어서는 안됩니다.
- 다운 스케일링 작업에는 이미지 만 사용하십시오
- 업 스케일링 작업에는 image.bicubic 필터링 만 사용하십시오.
- Paletted 이미지를 사용하는 경우 크기를 조정하기 전에 'RGB'색상 모드로 변환하는 것을 잊지 마십시오.
- .thumbnail ()을 사용하지 마십시오. 쓰레기입니다
- 설정
quality=
JPEG를 저장할 때 적절한 것으로 레벨 (기본값은 상당히 낮습니다)
다른 팁
왜 이미지가 확실하지 않습니다. 현재 릴리스에서 내가 실행 된 것은 원하는 크기를 파악하고 이미지를 제자리에 조정하는 것보다 더 큰 영향을 미칩니다. 적절한 RESAPLE 필터를 사용하고 RGB 먼저 (Bobince가 말한 것처럼) 썸네일은 크기 조정과 다르지 않아야합니다.
축소판 메소드의 실제 소스는 다음과 같습니다.
def thumbnail(self, size, resample=NEAREST):
# preserve aspect ratio
x, y = self.size
if x > size[0]: y = max(y * size[0] / x, 1); x = size[0]
if y > size[1]: x = max(x * size[1] / y, 1); y = size[1]
size = x, y
if size == self.size:
return
self.draft(None, size)
self.load()
try:
im = self.resize(size, resample)
except ValueError:
if resample != ANTIALIAS:
raise
im = self.resize(size, NEAREST) # fallback
self.im = im.im
self.mode = im.mode
self.size = size
self.readonly = 0
Pil은 좋은 크기 조정을 할 수 있습니다. 소스 이미지가 팔레트 색상이 아닌 RGB 모드인지 확인하고 다른 알고리즘 선택을 시도하십시오.
확인 했습니까? pypi? Cursory Search는 일부 이미지 관련 도구를 보여 주었고 Python-GD도 발견했습니다.
나는 PIL에 문제가 없었지만 어떤 종류의 다양성은 흥미로울 수 있습니다.
김프는 합리적인 명령 줄 인터페이스를 가지고 있다고 생각합니다.
이러한 이미징 라이브러리 중 일부를 살펴보십시오.
hxxp : //pypi.python.org/pypi/collective.croppingimagefield/0.1beta
hxxp : //pypi.python.org/pypi/cropresize/0.1.1
hxxp : //pypi.python.org/pypi/image_resize/1.0
마지막으로 비교했을 때,이 다운 스 칼러의 출력은 Gimp의 "Cubic"옵션과 거의 동일합니다.
import Image
def stretch(im, size, filter=Image.NEAREST):
im.load()
im = im._new(im.im.stretch(size, filter))
return im
IIRC, 차이는 시각적으로 구별 할 수 없다-일부 픽셀 값은 반올림으로 인해 +/- 1이며, 가장자리 둥근 경향이있다. 느리지 않습니다.
CF : http://www.mail-achive.com/image-sig@python.org/msg00248.html