문제

사진을 찍기 위해 몇 가지 간단한 작업을 수행 해야하는 파이썬 코드가 있습니다. 나는 PIL을 사용했고 Resailt/Resize 결과는 끔찍합니다. 나는 imageMagick을 사용했고 인터페이스와 명령은 고양이를 상자에 포장 한 다음 키보드에 계단 세트를 반복적으로 던져 버렸습니다.

나는 단순하고 고품질의 이미지 변환을 수행하기 위해 Python과 함께 사용할 수있는 Pil 또는 Imagemagick이 아닌 것을 찾고 있습니다. 그 문제에 대해서는 명령 줄 인터페이스가 양호한 경우 파이썬 바인딩을 가질 필요조차 없습니다.

아, 그리고 그것은 비교적 플랫폼의 불가지론이어야하며, 우리의 생산 서버는 Linux이지만 일부 개발자는 Windows에서 개발됩니다. 라이브러리로 사용하려면 바보 같은 GUI 코드를 설치할 필요가 없습니다.

도움이 되었습니까?

해결책

나는 PIL을 사용했고 Resailt/Resize 결과는 끔찍합니다.

그들은 당신만큼 오랫동안이어서는 안됩니다.

  1. 다운 스케일링 작업에는 이미지 만 사용하십시오
  2. 업 스케일링 작업에는 image.bicubic 필터링 만 사용하십시오.
  3. Paletted 이미지를 사용하는 경우 크기를 조정하기 전에 'RGB'색상 모드로 변환하는 것을 잊지 마십시오.
  4. .thumbnail ()을 사용하지 마십시오. 쓰레기입니다
  5. 설정 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 모드인지 확인하고 다른 알고리즘 선택을 시도하십시오.

Imagemagick은 사실상의 오픈 소스 이미징 라이브러리 인 것 같습니다. 악마 (크로스 플랫폼, 간단한 이미지 작업을 수행하는 것 같습니다) 또는 자유이지.

확인 했습니까? 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

나는 PIL을 사용했고 Resailt/Resize 결과는 끔찍합니다.

PIL의 크기 조정은 여러 가지면에서 깨졌으며 PIL은 오랫동안 유지되지 않습니다. 시작 베개 2.7 대부분의 문제는 성능 향상과 함께 해결됩니다. 사용 중인지 확인하십시오 최신 베개.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top