JPG 품질을 찾는 방법은 무엇입니까?


16

김프와 함께 JPG 파일을 저장하면 0-100에서 저장 한 품질을 조정할 수 있습니다 (89 사용). 이 숫자가 저장된 파일에 무엇인지 알기 위해 앱을 사용했던 것 같습니다.하지만 내가 할 경우 내 인생에서 그것이 무엇인지 알아낼 수 없습니다. 무엇을 사용해야하는지에 대한 제안이 있으십니까?


2
다른 응용 프로그램의 품질 설정은 일반적으로 faqs.org/faqs/jpeg-faq/part1/section-5.html 과 비교할 수 없습니다 . 그러나 김프와 ImageMagick은 모두 IJG 품질 척도를 사용해야합니다.
Michael Schumacher

답변:


22

일단 저장되면 더 이상 품질을 알 수 없습니다.

(저장하는 동안 품질을 설정하면 소프트웨어에 허용 가능한 손실이 얼마나되는지 알려 주지만 일단 저장되면 손실 된 내용이 손실됩니다.

흠, 내가 틀렸다고 생각한다. 난 아직도 위가 올바른 생각하지만 ImageMagick이 의는 identify잘못 나를 증명한다?

식별 -verbose myimage.jpg

이미지 : myimage.jpg
  형식 : JPEG (Joint Photographic Experts Group JFIF 형식)
  클래스 : DirectClass
  형상 : 358x240 + 0 + 0
  해결 : 300x300
  [...]
  압축 : JPEG
  품질 : 90
  오리엔테이션 : 정의되지 않음
  [...]

테스트에서 이미지가 어떻게 저장되었는지 모르지만 EXIF ​​데이터가 없습니다. 이미지에 여전히 품질을 저장할 수 있습니까?


다른 품질로 변환하는 실험을 할 수 없습니까? ImageMagick이 일부 개인 데이터를 jpg에 저장하지 않으면 믿기 어렵습니다 (따라서 다른 패키지에서는 작동하지 않을 수 있음).
harrymc

흥미 롭군 이것이 어떻게 진행되는지 기다릴 것입니다.
Nathaniel

1
+1 예 imagemagick가 작동합니다. jpeg 품질을 반복적으로 변경하고 식별을 사용하여 변경 사항을 볼 수 있습니다. 이것은 변환 (다른 imagemagick untility) 또는 MS Photo Editor와 같은 다른 도구를 사용하는 경우 작동합니다.
DaveParillo

1
ImageMagick이 다른 작업을 수행하고 있습니다. 원본 소프트웨어의 기능을 읽는 것이 아니라 추정치입니다. 당신의 독창적이고 정답은 정말 더 정확합니다. @sleske의 답변을 참조하십시오.
mattdm

26

Arjan의 답변에 추가하려면 다음을 수행하십시오.

ImageMagick identify은 JPEG 이미지 내부를 실제로 보면서 인코딩에 사용 된 품질 설정을 추측합니다.

ImageMagick의 소스 코드 (무료 소프트웨어를위한 응원) :

/*
  Determine the JPEG compression quality from the quantization tables.
*/
sum=0;
for (i=0; i < NUM_QUANT_TBLS; i++)
{
  if (jpeg_info.quant_tbl_ptrs[i] != NULL)
    for (j=0; j < DCTSIZE2; j++)
      sum+=jpeg_info.quant_tbl_ptrs[i]->quantval[j];

( coders/jpeg.c최근 버전의 ImageMagick 소스 코드에서 843ff.).

JPEG에 대해 실제로 이해하기에 충분하지 않지만이 기사에서 설명하는 것과 같은 것으로 보입니다.

Visual C # .NET을 사용하여 JPEG 품질 요소 결정 (2018 년 1 월부터 링크 가 끊어짐, 2015 년의 archive.org에서 복사 )

따라서 identify실제로 압축 파일만으로 JPEG의 품질 설정을 결정할 수 있습니다 (결과가 항상 정확한 것은 아님).


1
우와 소스 코드를 확인하는 것이 좋습니다. 멋있는.
Nathaniel

@Nathaniel, 내 대답 대신이 답변을 받아 들일 수 있습니까? 감사! (허용되는 한 내 것을 삭제할 수 없습니다.)
Arjan

압축 된 비트 스트림의 모양을 가장 잘 설명하는 JPEG 양자화 테이블을 찾고 있습니다.
jbarlow

5

Arjan metioned identify -verbose myimage.jpg가 그렇게 할 것입니다. imagemagick은 CLI 도구이므로 스크립팅에 유용 할 수 있습니다. 접근 방식 identify -verbose myimage.jpg | grep ...이 느립니다. 이런 식으로 IM을 사용하는 것이 좋습니다

identify -format '%Q' myimage.jpg

엄청 빠릅니다.


2

JPEGsnoop 은 ImageMagick의 훌륭한 대안 identify입니다. 다운로드는 매우 작으며 휴대용 형식으로 제공됩니다.

jpg를 처리 한 후 DQT 마커 아래에 "약 품질 요소"가 있습니다.


1

ImageMagick ++ 라이브러리를 사용하면 다음과 같이 쉽습니다.

Image magick_image( pathname );
size_t compressionFactor = magick_image.quality(); // 0..100

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.