문제

이것은 아직 두 부분의 질문입니다. 이런 일이 아직 어떻게 작동하는지 완전히 이해하지 못하기 때문입니다.

내 상황 : 사용자가 이미지를 업로드 할 수있는 웹 앱을 작성하고 있습니다. 그런 다음 내 앱은 표시 가능한 것으로 크기를 조정하고 (예 : 640x480-ish) 나중에 사용하기 위해 파일을 저장합니다.

내 질문 :

  1. 임의의 JPEG 파일이 주어지면 품질 수준이 무엇인지 알 수 있도록 크기가 크기가 크기가 가장 좋을까요?
  2. 이것은 심지어 중요합니까 ?? 원래 품질에 관계없이 모든 이미지를 괜찮은 수준 (예 : 75-80)으로 저장해야합니까?

내가 알 수 있듯이 : (극단적 인 예를 들어 보자), 누군가가 품질 0에 5 메가 픽셀 이미지를 저장 한 경우, 그것은 무엇이든 차단 될 것입니다. 이미지 크기를 640x480으로 줄이면 차단성이 부드럽고 간신히 눈에 띄지 않는 ... 품질 0으로 다시 저장할 때까지 ...

스펙트럼의 다른 쪽 끝에서 q = 0 인 800x600 인 이미지가있는 경우 640x480으로 크기를 조정하는 것은 완전히 쓰레기처럼 보이므로 q = 80으로 절약하는 것이 중복됩니다.

나도 가까워 요?

사용중인 경우 PHP에서 GD2 라이브러리를 사용하고 있습니다.

도움이 되었습니까?

해결책

  1. JPEG는 손실 형식입니다. 품질 수준에 관계없이 JPEG 동일한 이미지를 저장할 때마다 실제 이미지 품질이 줄어 듭니다. 따라서 파일에서 품질 수준을 얻었더라도 JPEG를 다시 저장할 때 (품질 = 100에서도) 동일한 품질을 유지할 수 없습니다.

  2. 파일 크기 측면에서 감당할 수있는만큼 jpeg를 높은 품질로 저장해야합니다. 또는 PNG와 같은 손실없는 형식을 사용하십시오.

품질이 낮은 JPEG 파일은 단순히 더 차단되지 않습니다. 대신 색 깊이가 줄어들고 이미지 섹션의 세부 사항이 제거됩니다. 더 낮은 품질의 이미지에 의존 할 수는 없으며 더 작은 크기는 괜찮아 보입니다.

에 따르면 JFIF 사양. 수평 및 수직 픽셀 밀도가 저장되지만 품질 번호 (0-100)는 이미지 헤더에 저장되지 않습니다.

다른 팁

Imagemagick의 압축 레벨을 볼 수 있습니다. 다운로드 및 설치 지침은 다음에서 찾을 수 있습니다 공식 웹 사이트.

설치 한 후 명령 줄에서 다음 명령을 실행하십시오.

identify -format '%Q' yourimage.jpg

또한 0 (낮은 품질, 작은 파일 크기)에서 100 (고품질, 큰 파일 크기)으로 값을 얻어야합니다.

정보 출처

향후 방문자의 경우 주어진 JPEG의 품질을 확인하면 imagemagick 툴링을 사용할 수 있습니다.

$> identify -format '%Q' filename.jpg
   92%

JPEG 압축 알고리즘에는 결과 이미지의 품질에 영향을 미치는 일부 매개 변수가 있습니다.

이러한 매개 변수 중 하나는 각 계수에 몇 비트가 사용할 수 있는지 정의하는 양자화 테이블입니다. 다른 프로그램마다 다른 정지 테이블을 사용합니다.

일부 프로그램을 통해 사용자는 품질 수준 0-100을 설정할 수 있습니다. 그러나이 숫자의 일반적인 방어는 없습니다. 60% 품질로 Photoshop으로 만든 이미지는 46KB이며 김프로 만든 이미지는 26KB 만 소요됩니다.

양자화 테이블도 다릅니다.

서브 샘플링, DCT 방법 등과 같은 다른 매개 변수가 있습니다.

따라서 단일 품질 수준 숫자로 모든 것을 설명 할 수 없으며 JPEG 이미지의 품질을 단일 번호로 비교할 수 없습니다. 그러나 Photoshop 또는 Gimp와 같은 숫자를 만들 수있는 품질 크기 사이의 타협을 설명 할 수 있습니다.

추가 정보:http://patrakov.blogspot.com/2008/12/jpeg-quality-is-meaningless-number.html

일반적인 관행은 이미지를 적절한 크기로 조정하고 그 후 JPEG를 적용한다는 것입니다. 이 경우 거대 및 중간 이미지는 크기와 품질이 동일합니다.

이미 두 가지 답변이 사용되어 있으므로 identify, 여기에 하나가 있습니다 또한 파일 이름을 출력합니다 (한 번에 여러 파일을 스캔하는 경우):

간단한 출력을 원한다면 filename: quality 여러 이미지에서 사용하려면 사용할 수 있습니다

identify -format '%f: %Q' *

에게 파일 이름 + 압축을 보여줍니다 현재 디렉토리 내의 모든 파일 중

따라서 기본적으로 두 가지 사례가 있습니다.

  1. 들어오는 이미지에 품질이 너무 높아지면 부적절한 공간이 필요할 수 있습니다. 따라서 예를 들어, 들어오는 q = 99에서 q = 85를 줄이기를 원할 수 있습니다.

  2. 들어오는 이미지에 품질이 너무 낮은 경우 품질을 높이는 공간 낭비 일 수 있습니다. 많은 양의 데이터 폐기 된 이미지가 품질이 높아질 때 마술처럼 더 많은 공간을 차지하지 않을 것입니다. 블록 이미지는 고품질 설정에서도 매우 잘 압축됩니다. 따라서 제 생각에는 들어오는 Q = 1에서 Q = 85를 높이는 것은 완벽합니다.

이것으로부터 나는 단순히 괜찮은 품질 설정을 강요하는 것이 완벽하게 받아 들여질 수 있다고 생각합니다.

다음은 제가 잘 작동하는 공식입니다.

  1. JPG100Size (98-100% 품질의 경우 바이트를 초과해서는 안된 크기) = 너비*높이/1.7

  2. jpgxsize = jpg100size*x (x = %, 예 : 0.65)

따라서, 당신은 이것을 사용하여 JPG가 마지막으로 저장되었는지 통계적으로 찾을 수 있습니다. 65%의 품질을 말하고 리샘플링을 피하려면 처음에 크기를 비교하여 아직 너무 낮지 않은지 확인하고 품질을 줄여야합니다.

파일의 모든 새로운 저장은 더 높은 품질 값을 사용하여 전체 품질을 더욱 줄입니다. 원래 이미지 품질에 관계없이.

원래 생성 한 동일한 소프트웨어를 사용하여 JPEG를 다시 사용하여 동일한 설정을 사용하여 손상이 최소화된다는 것을 알게됩니다. 알고리즘은 처음으로 던진 동일한 정보를 버리는 경향이 있습니다. 파일을 보면 어떤 레벨이 선택되었는지 알 수있는 방법이 없다고 생각합니다. 할 수 있더라도 다른 소프트웨어는 서로 다른 매개 변수와 반올림을 보장하여 거의 일치하지 않습니다.

이것은 어리석은 질문일지도 모르지만 왜 문서의 품질을 미세 관리하는 것에 대해 걱정하십니까? Imagemagick을 사용하여 변환을 수행하면 최상의 효과를 위해 JPEG의 품질을 관리 할 것이라고 생각합니다. http://www.php.net/manual/en/intro.imagick.php

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top