프로그래밍

파이썬 pillow-avif-plugin 라이브러리 gif->avif 변환 관련 문제

from PIL import Image, ImageSequence
import pillow_avif

image.save(image_path_out + '.avif', 'AVIF', save_all=True, speed=0, subsampling="4:2:0", quality=75)

이걸로 하면 알파 채널 있는 GIF를 AVIF로 변환할 때 알파 채널이 유지되지 않음
 

그래서

if "transparency" in image.info:
    frames = []
        for frame in ImageSequence.Iterator(image):
            frame = frame.convert('RGBA')
            frames.append(frame)
    frames[0].save(image_path_out + '.avif', save_all=True, append_images=frames[1:], speed=0, subsampling="4:2:0", quality=75)

이렇게 해보니 알파채널이 유지됐는데 문제는 매우 빠르게 재생이 되는데
 

frames[0].save(image_path_out + '.avif', save_all=True, append_images=frames[1:], duration=image.info['duration'], speed=0, subsampling="4:2:0", quality=75)

이런 식으로 실행해보니 정상적으로 재생이 되는데
이렇게까지 해야되나? 의문심이 듬

왜냐하면 https://github.com/fdintino/pillow-avif-plugin/issues/14
이 링크에서 그냥 변환할 시 이미지 시퀀스 모드를 지원하지 않는 뷰어 또는 플레이어때문에 정상적인 재생이 되지않는다고 했고
그냥 변환한 후, html로 크롬에서 재생하면 정상적으로 재생된다는데
정작 크롬에서 매우 느리게 재생이 되고 그 외의 뷰어에서 재생하면 매우 빠르게 재생이 되는데
duration=image.info['duration']를 넣으면 크롬, 뷰어 둘 다 매우 부드럽게 정상적으로 재생이 됨


내가 잘못한건지 아닌지 잘 모르겠음
아무 옵션없이 변환시켜서 멀쩡한 결과물이 나오면 좋겠는데

정상적인 변환이 안되다보니 다른 라이브러리로 갈아타야하나들고

이미 다 고쳤다지만 뭔가 찝찝함이 크네

3개의 댓글

메모장으로 써야겠다.

 

JPG 그레이 스케일 모드인 경우 AVIF로 변환할 때 크로마 서브 샘플링 YUV400로 바꾸는 게 좋음

420로 변환하더라도 색상 정보가 없어 큰 영향을 주는 것은 아니지만 용량을 미세하게 줄일 수 있음

0

AVIF는 손실압축 알고리즘만을 사용하는 포맷으로 무손실은 엄연히 따지자면 무손실이 아니며

무손실 압축을 하고싶다면 WEBP의 무손실 압축 알고리즘을 사용하는게 좋다.

0

PNG의 팔레트(PAL7 또는 PAL8)가 알파채널을 보유하면 AVIF로 제대로 변환이 되지 않고 투명 배경이 초록색으로 표시되는 버그가 있음

if 'PNG' == image.format:

if image.mode == 'P':

if "transparency" in image.info:

image = image.convert('RGBA')

로 해결 볼 것

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
5711 [프로그래밍] 요즘 앱개발 인력시장 어떰..3년차 2 센치해요 0 1 일 전 248
5710 [프로그래밍] 컴포즈 Box 컴포넌트가 안 나와... 1 집에가게해줘 0 3 일 전 126
5709 [프로그래밍] 아 ssl 적용햇는데 개정신없네 9 넌또화나있네 0 3 일 전 251
5708 [프로그래밍] 패스트 캠퍼스 <---- 얘내는 가격 인상 원툴임? 5 조강현 0 6 일 전 338
5707 [프로그래밍] 클라가 파이썬 셀레니움같은거 써서 클릭하고 그러는걸 감지 ... 5 리옴므 0 7 일 전 224
5706 [프로그래밍] leetcode 50일 달성 1 JimmyMcGill 1 7 일 전 195
5705 [프로그래밍] 그냥 개인공부용 git 만들건데 5 년째재수강 0 7 일 전 285
5704 [프로그래밍] html 자바스크립트 질문 19 책걸이 0 8 일 전 331
5703 [프로그래밍] 아니 시바 이게 무슨일이야 4 인간지표 0 9 일 전 347
5702 [프로그래밍] 아두이노 키트 아무것도 모르고 사도 될까? 6 그것 0 9 일 전 268
5701 [프로그래밍] 횽들 Vimeo에 올라가있는 동영상의 원본크기를 확인할 수 있... 13 카뜨만두 0 9 일 전 193
5700 [프로그래밍] c# 이벤트와 델리게이트 13 RX7900XTX 0 12 일 전 316
5699 [프로그래밍] Aws 람다에 파이썬 올려서 결과 받아오는데 11 아르피쥐 0 14 일 전 357
5698 [프로그래밍] 마리아DB mediumtext 그냥 쓰고 싶은데 21 잉텔 0 14 일 전 226
5697 [프로그래밍] 안드로이드 씹뉴비 질문이요 2 집에가게해줘 0 14 일 전 132
5696 [프로그래밍] c언어 7년했는데 이런게 되는거 처음알았음.. 4 케로로중사 0 15 일 전 988
5695 [프로그래밍] 파이썬 1도 모르는데 GPT로 프로그램 뚝딱 만듬 2 푸르딩딩 1 19 일 전 866
5694 [프로그래밍] 담주 면접잡혔는데 8 삐라루꾸 0 19 일 전 614
5693 [프로그래밍] 아두이노 부트로더를 구웠는데.. 4 렙이말한다ㅡ니가옳다 0 19 일 전 243
5692 [프로그래밍] IOS 개발자 있나여? 1 g4eng 0 22 일 전 265