Pillow(PIL)로 생성하는 gif의 화질을 올린다
단도직입
im.quantize()
그냥소개
Python 이미지 처리 라이브러리의 Pillow를 사용하면 gif 애니메이션을 쉽게 만들 수 있습니다.
자세한 것은 모두 사랑해 의. 응 kmk. 눈 에 양보합니다만 , 적당하게 화상을 몇장 열어 옵션을 결정하는 것뿐입니다.
makegif.py
from PIL import Image
im1 = Image.open("hoge.png")
im2 = Image.open("huga.png")
images = [im1, im2]
images[0].save('test.gif', save_all=True,
append_images=images[1:], optimize=False, duration=500, loop=0)
즐거운 애니메이션이 생겼습니다.
사진의 경우
그렇다면, 말하기와 같은 간단한 일러스트가 아니라 사진에서도 시도합시다.
감시 카메라를 통해 본 것 같은 심한 화질이 되어 버렸습니다.
왜…
*추기
스마트폰에서 보면 그렇게 화질이 나쁘지 않은 것처럼 보일지도 모릅니다.
PC로부터라면 상당히 혹독함을 알 수 있습니다. (추기 끝)
gif 제한 및 회피
2색 흑백에서 16777216색(=224) 중 256색(=28)까지의 색 지원
그랬어요. 옛날부터 나를 즐겁게 해주고 있던 gif들은 256색의 제한 속에서 싸우고 있던 것 같습니다.
그러나 이것은 곤란합니다. 라고 할까 가비가비가 아닌 사진의 gif도 본 적이 있는 것 같습니다.
조사해 보면 다음과 같은 설명을 발견했습니다. (Deepl 번역에 조금 추가)
또 다른 방법은 "양자화(the quantize method)"입니다. 현재 멀티 프레임 GIF를 만들 때 Pillow는 웹 팔레트를 사용하여 이미지를 변환하고 있습니다. 양자화를 사용하여 이미지를 먼저 P로 되돌리는 것이 사용되는 정확한 색상을 더 잘 표현할 수 있는 것처럼 보입니다.
htps : // 기주 b. 코 m / py 텐 - 핏 w / 핏 w / 이스에 s / 3660
지금 핀과 오지 않지만 Pillow에서 열린 이미지에 .quantize()하는 것으로 좋은 느낌이 될 것 같습니다.
해보자.
makegif.py
from PIL import Image
im1 = Image.open("gohan1.jpg").quantize()
im2 = Image.open("gohan2.jpg").quantize()
im3 = Image.open("gohan3.jpg").quantize()
images = [im1, im2, im3]
images[0].save('test2.gif', save_all=True,
append_images=images[1:], optimize=False, duration=800, loop=0)
! ! !
맛있을 것 같습니다! 이것이라면 먹을 수 있습니다! !
무슨 일이야?
Pillow의 quantize에 의해, 밥의 이미지를 256색까지 좋은 느낌으로 감색했습니다.
이번은 디폴트인 채이므로, 메디안컷(option=0)이라고 하는 방법으로 감색된 것 같습니다.
그 밖에도 maximum coverage, fast octree의 방법을 선택할 수 있는 것 같습니다. (libimagequant라는 방법도있는 것 같습니다만, 실행할 수 없었습니다)
각각을 비교해 봅시다.
maximum coverage의 열화가 심합니다. 그 외 2개는 꽤 비슷합니다만, 앞의 백반을 보면 약간 fast octree 쪽이 잘 감색되어 있다고 생각합니다.
요약
Pillow에서 gif가 보케했을 때는 우선 quantize!
Reference
이 문제에 관하여(Pillow(PIL)로 생성하는 gif의 화질을 올린다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Mechanetai/items/4ec988a463fe649a52f9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)