이미지 조작을 위해 PIL 대신 python-3을 사용하는 것은 무엇입니까?
Pillow
PyPI에서 설치 해야하며 PIL
; 이것은 Python 2에서도 선호되는 패키지입니다.
이미지 조작을 위해 PIL 대신 python-3을 사용하는 것은 무엇입니까?
Pillow
PyPI에서 설치 해야하며 PIL
; 이것은 Python 2에서도 선호되는 패키지입니다.
답변:
"친숙한 PIL 포크" Pillow 는 Python 2 및 3에서 작동합니다 . 지원 매트릭스 등 은 Github 프로젝트 를 확인하십시오 .
pip3 install Image
(I 모르게 베개를 사용했다), 그리고 당신을from PIL import Image
. 또한 현재 모든 주요 플랫폼을 지원 합니다 . python3에 대한 PIL을 찾을 때 이것은 확실히 선택입니다.
Christoph Gohlke는 Python 버전 3.3까지의 PIL (Windows 전용)을 빌드했습니다. http://www.lfd.uci.edu/~gohlke/pythonlibs/
나는 그의 버전의 PIL을 Python 3.2로 시도하고 이미지 열기 / 생성 / 픽셀 조작 / 모든 작업을 저장했습니다.
Qt는 그래픽과 매우 잘 작동합니다. 제 생각에는 PIL보다 다재다능합니다.
그래픽 조작에 필요한 모든 기능을 사용할 수 있지만 벡터 그래픽과 실제 프린터도 지원합니다. 그리고 하나의 균일 한 API에서이 모든, QPainter
.
Qt를 사용하려면 Python 바인딩이 필요합니다 : PySide 또는 PyQt4 .
둘 다 Python 3을 지원합니다.
다음은 JPG 이미지를로드하고 해당 좌표에있는 픽셀의 색상으로 (20, 20) 좌표 에 반경 10 의 앤티 앨리어싱 된 원을 그리고 수정 된 이미지를 PNG 파일로 저장 하는 간단한 예제입니다 .
from PySide.QtCore import *
from PySide.QtGui import *
app = QCoreApplication([])
img = QImage('input.jpg')
g = QPainter(img)
g.setRenderHint(QPainter.Antialiasing)
g.setBrush(QColor(img.pixel(20, 20)))
g.drawEllipse(QPoint(20, 20), 10, 10)
g.end()
img.save('output.png')
그러나 Qt는 GUI 애플리케이션을 만들기위한 대규모 프레임 워크이기 때문에이 솔루션은 상당히 '무거운'것입니다.
2012 년 3 월 30 일 현재 GitHub에서 sloonz 포크를 사용하여 이미지를 열지 못했습니다. 나는 그것을 잘 컴파일했지만 실제로 작동하지 않았습니다. 나는 또한 gohlke의 라이브러리를 구축하려고 시도했지만 컴파일되었지만 이미지를 열지 못했습니다. 누군가 위에서 PythonMagick을 언급했지만 Windows에서만 컴파일됩니다. wxPython wiki에서 PythonMagick을 참조하십시오 .
PIL은 2009 년에 마지막으로 업데이트되었습니다. 웹 사이트에서는 Python 3 포트에 대해 작업하고 있다고 말하지만 3 년이 지났고 메일 링리스트가 식었습니다.
Python 3 이미지 조작 문제를 해결 subprocess.call()
하기 위해 ImageMagick 셸 명령을 실행 하는 데 사용 하고 있습니다. 이 방법이 작동합니다.
하위 프로세스 모듈 설명서를 참조하십시오 .
필요한 것에 따라 scikit-image 가 최선의 선택이 될 수 있으며 PIL과 현재 버전의 Pillow를 넘어서는 조작이 가능합니다. 적어도 Pillow만큼 잘 관리되어 있습니다. 또한 기본 데이터 구조는 Numpy와 Scipy의 코드이므로 코드를 매우 상호 운용 할 수 있습니다. 베개가 처리 할 수없는 예 :
Python3를 사용하는 경우 Python 2 및 3에서 작동하는 라이브러리 PILasOPENCV를 사용할 수도 있습니다. 함수 API 호출은 PIL 또는 pillow에서와 동일하지만 내부적으로 OpenCV 및 numpy와 함께 작동하여 이미지를로드, 저장 및 조작합니다. 한 번 봐 가지고 https://github.com/bunkahle/PILasOPENCV을 하거나 PILasOPENCV를 설치 핍으로 설치합니다. 모든 PIL 함수가 시뮬레이션 된 것은 아니지만 가장 일반적인 함수가 작동합니다.