
최대 3MB의 데이터를 트윗 가능한 PNG 폴리글롯 파일로 패킹합니다.
최대 3MB의 데이터를 트윗 가능한 PNG 폴리글롯 파일로 압축합니다.
작동 모습: https://twitter.com/David3141593/status/1371974874856587268

이 기법이 작동하는 것을 확인한 다른 이미지 호스트:
Imgur (https://i.imgur.com/kNhGrN3.png)
Github 저장소 썸네일/헤더 이미지 (https://repository-images.githubusercontent.com/348501512/06710f00-8886-11eb-95d1-3f416fa3853a)
Discord (어차피 임의 파일을 지원하므로 큰 놀라움은 아닙니다) (https://cdn.discordapp.com/attachments/464905259261755392/823171702170845199/06710f00-8886-11eb-95d1-3f416fa3853a.png)
작동하지 않는 것을 확인한 이미지 호스트:
Twitter는 PNG 업로드에서 불필요한 데이터를 제거하지만, IDAT 청크 내부의 DEFLATE 스트림 끝에 있는 트레일링 데이터는 제거하지 않습니다. 단, 전체 이미지 파일이 재인코딩을 피하기 위한 요구 사항을 충족해야 합니다.
글쎄요.
커버 이미지는 압축된 파일 크기가 (가로 * 세로) - 포함된 파일 크기보다 작도록 잘 압축되어야 합니다. 커버 이미지에 팔레트가 없으면 최소 257개의 고유 색상이 있어야 합니다 (그렇지 않으면 Twitter가 팔레트를 사용하도록 최적화합니다).
해상도는 최대 4096x4096까지 가능하지만, Twitter는 680x680보다 큰 이미지의 경우 기본적으로 다운스케일된 버전을 제공한다는 점에 유의하세요 (디스플레이 DPI 등에 따라 다름).
이미지에는 불필요한 메타데이터 청크가 없어야 합니다. GIMP에서 다음 내보내기 설정을 사용했습니다:

전체 출력 파일 크기는 3MB 미만이어야 합니다 (아마 5MB?). 그렇지 않으면 Twitter가 PNG를 JPEG로 변환합니다.
포함된 파일이 .zip인 경우 오프셋이 자동으로 조정되어 전체 파일이 여전히 유효한 zip 파일이 됩니다. 다른 파일 형식의 경우 직접 처리해야 합니다 (특별한 처리 없이도 작동하는 경우가 많으며, 특히 .pdf, .mp3 등이 그렇습니다).