libjpeg

libjpeg
libjpeg
Logo IJG libjpeg v9
개발자독립 JPEG 그룹
Guido Vollbeding(유지관리자)[1][2]
초기 릴리즈1991년 10월 7일, 30년 전(1991-10-07)
안정된 릴리스
9e / 2022년 1월 16일, 6개월 전(2022-01-16)
기입처C
운영 체제크로스 플랫폼
유형도서관
면허증.커스텀 BSD 라이크 (프리 소프트웨어)
웹 사이트ijg.org; jpegclub.org/reference/

libjpeg는 JPEG 이미지 데이터 형식을 처리하는 기능이 있는 무료 라이브러리입니다.JPEG 데이터 처리를 위한 다양한 유틸리티와 함께 JPEG 코덱(부호화 및 디코딩)을 구현합니다.C로 작성되어 있으며, 귀속을 요구하는 커스텀 퍼미셔너블(BSD) 프리 소프트웨어 라이선스의 조건에 따라 소스 코드와 함께 프리 소프트웨어로 배포됩니다.원래 변형은 독립 JPEG 그룹(IJG)에 의해 유지되고 발행됩니다.한편, 추가 기능을 갖춘 포크가 몇 개 있습니다.

JPEG JFIF 이미지는 웹에서 널리 사용됩니다.압축량은 파일 크기와 시각적 [3]품질 사이에서 원하는 균형을 이루도록 조정할 수 있습니다.

유틸리티

다음 유틸리티 프로그램은 libjpeg와 함께 제공됩니다.

cjpeg 및 djpeg
JPEG와 기타 일반적인 이미지 파일 형식 간에 변환을 수행합니다.
rdjpgcom 및 wrjpgcom
JPEG 파일에 텍스트 주석을 삽입 및 추출합니다.
jpegtran
기존 JPEG 파일을 변환합니다.

jpegtran

jpegtran은 재인코딩 없이 JPEG 데이터를 변환합니다.
(여기에는 CropGUI 사용자 인터페이스 포함)

명령줄 프로그램 jpegtran은 DCT 계수의 표현을 재포맷 및 재코딩하고, 실제 영상 데이터를 변환하고, JPEG 파일에서 보조 데이터를 폐기하는 몇 가지 기능을 제공합니다.계수의 표현과 관련된 변환은 다음과 같이 구성됩니다.

  • 압축을 증가시키기 위해 JPEG 파일의 Huffman 코딩 레이어의 최적화,
  • 프로그레시브 JPEG 형식과 시퀀셜 JPEG 형식 간의 변환,
  • 엔트로피 부호화 [4][5][6]층에서 Huffman과 산술 부호화 사이의 변환.

이러한 변환은 각각 완전히 무손실이며 되돌릴 수 있습니다.이미지 데이터의 변환은 다음과 같이 구성됩니다.

  • 일부 이미지 프로그램에서 삽입된 표준이 아닌 애플리케이션 고유의 데이터를 삭제합니다.
  • 는 파일에서 다음과 같은 특정 변환을 수행합니다.
    • 컬러 채널 폐기(그레이스케일로 변경),
    • 90도씩 회전하고 뒤집고
    • 이미지 블록 경계에서 자르기 또는 결합(8×8 또는 16×16 픽셀마다),
    • 스케일러링[7]

이러한 데이터는 무손실이며 보관되는 영상 데이터에 대해서만 되돌릴 수 있습니다.영상 데이터의 반복 손실 양자화(생성 손실)로 재인코딩하지 않습니다.

Jpegcrop이라는 관련 Windows 응용 프로그램이 있으며 Jpegcrop은 Jpegtran에 사용자 인터페이스를 제공합니다.Linux와 같은 Unix 계열 시스템에는 무료 Crop이 있습니다.유사한 기능을 가진 GUIIJG 코드에 기반한 JPEG 무손실 변환 함수를 지원하는 더 많은 프로그램이 무손실 애플리케이션 목록에 제공됩니다.

역사

독립 JPEG 그룹(IJG)의 JPEG 구현은 1991년 10월 7일에 처음 공개되었고 그 이후로 상당히 발전되어 왔다.개발은 처음에 주로 Tom Lane에 의해 이루어졌다.IJG의 오픈 소스 구현은 주요 오픈 소스 패키지 중 하나였으며 JPEG 표준의 성공에 열쇠가 되었다.많은 회사들이 이미지 에디터나 웹 [8]브라우저와 같은 다양한 제품에 그것을 포함시켰다.

1994년 9월 24일에 출시된 버전 5에서는 코드 베이스 전체가 다시 작성되었습니다.임베디드 텍스트 코멘트를 처리하기 위한 유틸리티 프로그램 rdjpgcomwrjpgcom을 도입했습니다.1995년 8월 2일 버전 6은 프로그레시브 JPEG를 지원하며 유틸리티 프로그램으로는 처음으로 제공되었습니다.이 유틸리티는 버전 6b에서 영상을 회전 및 플립하는 기능과 그레이스케일 축소로 확장되었습니다.

1998년 3월 27일 libjpeg 버전 6b부터 미야사카 마사루는 x86 SIMD 최적화를 포함한 libjpeg/SIMD라는 이름의 분기를 분기했다.2009년에는 Tiger VNC 및 VirtualGL 프로젝트에서 많은 기여를 했습니다.이를 바탕으로 libjpeg-turbo 프로젝트가 [9]2010년에 만들어졌습니다.

11년간의 리더십 변화와 함께 IJG는 새로운 버전의 libjpeg(7~9)를 출시했으며, 각각 이전 [10]버전과의 ABI 호환성을 깨뜨렸다.6x 시리즈 이후 예상되는 변경 사항은 [11]전달되지 않았습니다.버전 7에서는 산술 부호화의 지원이 도입되었습니다.이는 특허 상황 및 jpegtran의 자르기 기능으로 인해 이전에 거부되었습니다.-crop를 참조해 주세요.[11]

버전 8과 9는 기본적으로[12] 호환성이 없는 포맷 확장자를 도입하는 데 도움이 되었습니다.이러한 솔루션은 효과적이지 않고 기존의 표준화된 솔루션보다 [13][14]열등하다고 널리 알려져 있습니다.표준화는 ITU-T에 제출된 후 거부되었습니다.원래 주최자인 Tom Lane과 다른 사람들은 이러한 변경이 IJG의 [12]목표와 단절된 것이라고 비판합니다.

2014년 3월 4일, filesize-optimizing fork mozjpeg의 첫 번째 버전이 공개되었습니다.이 버전에서는 Mozilla Research의 Josh Aas가 x264의 주요 개발자 Loren Merritt에서 Perl 스크립트 jpegcrush를 재작업하여 libjpeg-turbo의 [15]코드 베이스에 통합하였습니다.

2014년 7월 10일, Mozilla는 주로 트렐리스 양자화를 추가하여 베이스라인 JPEG의 크기를 줄일 수 있는 버전 2.0을 출시하였다.Facebook, Inc.는 다음 [16]버전 개발을 위해 6만 달러를 기부했고 CloudFlare는 mozjpeg [17]개선을 위해 개발자를 배정했다.

버전

버전 방출된 신기능
ITU T.81 JPEG 지원
이전 버전, 더 이상 유지 보수되지 않음: 1 1991 초판
베이스라인 또는 최적화된 JPEG
GIF 또는 PPM 출력
이전 버전, 더 이상 유지 보수되지 않음: 2 1991 내부 개선
더 많은 입력/출력 형식
이전 버전, 더 이상 유지 보수되지 않음: 3 1992 내부 및 이미지 품질 향상
이전 버전, 더 이상 유지 보수되지 않음: 4 1992 내부 및 속도 향상
이전 버전, 더 이상 유지 보수하지 않음: 4a 1993-02-18
이전 버전, 더 이상 유지 보수되지 않음: 5 1994-09-24 내부 개선 및 API 개정
이전 버전, 더 이상 유지 보수하지 않음: 5a 1994-12-07
이전 버전, 더 이상 유지 보수되지 않음: 5b 1995-03-15
이전 버전, 더 이상 유지 보수되지 않음: 6 1995-08-02 프로그레시브 JPEG
jpegtran(베이스라인과 프로그레시브 사이에 있음)
이전 버전, 더 이상 유지 보수하지 않음: 6a 1996-02-07
이전 버전, 아직 유지 보수: 6b 1998-03-27 무손실 회전으로 확장되는 jpegtran
libjpeg-turbo에서 사용
독자적인 비호환 확장 기능
이전 버전, 더 이상 유지 보수되지 않음: 7 2009-06-27 jpegtran 무손실 자르기까지 확장

T.851 산술[18] 부호화
SmartScale 확장(ITU 거부)[19][20]

이전 버전, 더 이상 유지 보수되지 않음: 8 2010-01-10 내부 수정
smartScale을 사용하도록 jpegtran 확장
이전 버전, 더 이상 유지 보수하지 않음: 8a 2010-02-28 RGBA
이전 버전, 더 이상 유지 보수되지 않음: 2010-05-16
이전 버전, 더 이상 유지 보수하지 않음: 8c 2011-01-16 가변 DCT 블록 크기
이전 버전, 더 이상 유지 보수되지 않음: 8d 2012-01-15 RGB JPEG (YCbCr로 색 변환 없음)
이전 버전, 더 이상 유지 보수되지 않음: 9 2013-01-13 YCoCg 색상
무손실 압축(1x1 DCT)[21]
이전 버전, 더 이상 유지 보수되지 않음: 9a 2014-01-19 "JFIFv2" scRGB 와이드 색역 (표준 미지)
8 ~ 12 비트컬러(원래 JPEG)
이전 버전, 더 이상 유지 보수되지 않음: 9b 2016-01-17
이전 버전, 더 이상 유지 보수되지 않음: 2018-01-14
이전 버전, 더 이상 유지 보수되지 않음: 9d 2020-01-12
현재 안정적인 버전: 9e 2022-01-16
범례: 이전 버전, 유지 관리 안 함 이전 버전, 아직 유지 관리됨 현재 안정된 버전 최신 프리뷰 버전 향후 출시

포크

잘 알려진 포크는 실행 속도를 최적화하는 libjpeg-turbo와 더 작은 파일 크기에 맞게 최적화하는 mozjpeg입니다.

ISO에서는 JPEG,[22] JPEG XT 및 JPEG-LS 표준의 완전한 구현을 목표로 하는 유사한 이름의 라이브러리도 있습니다.

libjpeg 매개체

libjpeg 매개체
Logo libjpeg-turbo
개발자libjpeg-turbo 프로젝트
초기 릴리즈2010년 11월 19일, 11년 전(2010년 11월 19일)
안정된 릴리스
2.1.2 / 2021년 8월 10일; 11개월 전(2021-08-10)
웹 사이트libjpeg-turbo.org

libjpeg-turbo는 SIMD 명령사용하여 기준 JPEG 인코딩 및 디코딩을 가속화하는 libjpeg의 포크입니다.현재 인기 있는 Linux 디스트리뷰션(Fedora, Debian, Mageia, openSUSE, ...), Mozilla, [23][24][25]Chrome 등 많은 프로젝트에서 libjpeg 대신 libjpeg-turbo를 사용하고 있습니다.퍼포먼스 이외에도 일부 프로젝트에서는 libjpeg-turbo를 사용하여 이전 libjpeg v6b [26]릴리스와의 하위 ABI 호환성을 유지할 수 있습니다.libjpeg v7, v8 및 v9는 이전 [10]릴리스와의 ABI 호환성을 무너뜨렸습니다.

libjpeg-turbo는 libjpeg v7 또는 v8 ABI와 호환되도록 설정할 수 있지만 SmartScale 형식 [27]확장을 포함한 최신 IJG 릴리스의 모든 기능을 구현하지는 않습니다.libjpeg-turbo Project는 SmartScale이 ITU-T 표준이 아닌 점에 대한 우려와 이 기능의 유용성에 의문을 제기하는 자체 연구를 인용하여 SmartScale을 지원하지 않기로 결정했습니다.또한 libjpeg v9의 주요 신기능은 SmartScale 형식에만 한정되어 있기 때문에 libjpeg-turbo 프로젝트는 libjpeg v9를 [13]에뮬레이트하지 않기로 결정했습니다.따라서 libjpeg v8 이후에 작성된 SmartScale 파일은 libjpeg-turbo에 의해 올바르게 압축 해제되지 않습니다.

libjpeg-turbo는 ISO/IEC 10918-7ITU-T T.873으로 사용 가능한 2개의 JPEG 레퍼런스 구현 중 하나입니다.다른 기준 구현은 ISO libjpeg로, JPEG XT 및 JPEG LS도 지원합니다.

모즈페그

모즈페그
mozjpeg
Cjpeg-screenshot.png
mozjpeg는 DCT 계수의 스펙트럼 분할을 시도한다.
개발자모질라 리서치
초기 릴리즈2014년 3월 4일, 8년 전(2014-03-04)
안정된 릴리스
4.0.3 / 2021년 2월 26일, 17개월 전(2021-02-26)[28]
웹 사이트github.com/mozilla/mozjpeg

mozjpeg는 Josh Aas와 Mozilla Research의 다른 사람들이 수행한 libjpeg-turbo의 포크입니다.화질을 유지하면서 코딩 효율 향상을 통해 파일 크기(약 10%)를 줄여 웹페이지 로딩 시간을 단축하고 전송 시간을 단축하겠다는 것이다.이를 위해 JPEG 표준과의 완전한 호환성을 유지하면서 부호화(비대칭)에 더 많은 처리 능력을 사용합니다.또, 디코더측의 변경은 불필요합니다.

높은 압축을 달성하기 위해 mozjpeg가 사용하는 기법에는 허프만 트리의 최적화, DCT 계수의 스펙트럼을 별도의 스캔으로 최적으로 분할하기 위한 프로그레시브 코딩 사용 및 트렐리스 양자화 사용이 포함된다.또한 사전 설정은 파일 크기를 최소화하도록 적극적으로 조정됩니다.

libjpeg-turbo 외에도 mozjpeg는 로렌 [15][29]메릿의 Perl 스크립트인 jpegcrush를 기반으로 합니다.

ISO libjpeg

ISO/IEC 공동 사진 전문가 그룹기본 JPEG(ISO/IEC 10918-1 및 18477-1) 및 JPEG XT 확장(ISO/IEC 18477 파트 2 및 6-9) 및 무손실 JPEG-LS(ISO/IEC 14495)[30]에 대한 참조 소프트웨어 구현을 유지합니다.또한 mozjpeg의 최적화도 포함되어 있습니다.libjpeg라는 이름도 있지만 독립 JPEG 그룹(IJG)이 제공하는 소스 코드와는 관련이 없으며 2007년 이후 IJG가 도입한 독점 확장자도 지원하지 않습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Göhler, Lars (April 29, 2020). "New Version of libjpeg (Ver. 9d) of Independent JPEG Group available now". JPEGclub.org. Independent JPEG Group. Retrieved 2021-01-25.
  2. ^ Friesenhahn, Bob (June 6, 2020). "Re: [Libjpeg-devel-6x] 4 Integer Overflow Errors in libjpeg-9c". SourceForge.net. SourceForge. Retrieved 2021-01-25. The only concern was that Guido Vollbeding is not likely subscribed to this list and IJG JPEG is essentially developed by one person.
  3. ^ JPEG JFIF
  4. ^ Jpegcrop 설정 및 옵션 설명
  5. ^ Filmic Games >> 특허 시스템의 가장 큰 실패는...2012-09-01 Wayback Machine에서 아카이브 완료
  6. ^ 680385 - Firefox에서 산술적으로 코드화된 jpegs가 표시되지 않음
  7. ^ 새로운 jpegtran 기능
  8. ^ JPEG 홈페이지
  9. ^ http://libjpeg-turbo.virtualgl.org/
  10. ^ a b "libjpeg: API/ABI changes review". Retrieved 2017-10-28.
  11. ^ a b Mans Rullgard(Hardwarebug.org), 2009년 8월 4일:IJGWayback Machine에 2014-07-16 아카이브 완료
  12. ^ a b Tom Lane, 2013년 1월 16일: jpeg-9, API/ABI 호환성 및 프로젝트의 미래 역할
  13. ^ a b "What About libjpeg v9?". libjpeg-turbo team. Retrieved February 8, 2013.
  14. ^ Mans Rullgard(Hardwarebug.org), 2010년 2월 1일:IJG가 다시 휘청거려 놓치다
  15. ^ a b Andre Kramer(heise.de-Newsticker), 2013년 1월 14일: Mozilla-Encoder verbessert JPEG-Kompression
  16. ^ Sebastian Grüner, 16. Juli 2014: mozjpeg 2.0: Facebook unterstützt JPEG-Encoder von Mozilla
  17. ^ "CloudFlare möchte zu Mozillas JPEG-Encoder beitragen". 30 July 2014.
  18. ^ "ITU-T T.81 (JPEG-1)-based still-image coding using an alternative arithmetic coder" (pdf). September 2009.
  19. ^ ITU-T JPEG-Plus 제안 R3
  20. ^ JPEG의 진화
  21. ^ JPEG 9 무손실 코딩
  22. ^ "Libjpeg". GitHub. 6 October 2021.
  23. ^ libjpeg-turbo를 사용하거나 제공하는 소프트웨어.2012년 2월 9일
  24. ^ Issue 48789 – Chromium – libjpeg 대신 libjpeg-turbo를 사용합니다.2011년 4월 14일
  25. ^ Bug 698519 libjpeg-turbo 1.2로 업데이트.2012년 2월 28일
  26. ^ f14의 libjpeg.2012년 2월 9일
  27. ^ libjpeg-turbo README 파일 웨이백 머신에 보관된 2018-12-14
  28. ^ "Releases · mozilla/mozjpeg". github.com. Retrieved 2021-04-14.
  29. ^ Andreas Donath(golem.de), 2014년 3월 6일: Mozilla는 JPEGs besser komprimieren을 발표합니다.
  30. ^ "Jpeg - Jpeg Xt".

외부 링크