[image-processing] ImageMagick으로 JPG 파일을 압축하기위한 권장 사항

ImageMagick으로 JPG 이미지 파일을 압축하고 싶지만 크기 차이는 크지 않습니다. 기본적으로 출력 크기는 입력보다 큽니다. 왜 그런지 모르겠지만 + 프로필 옵션을 추가하고 품질을 설정하면 더 작은 크기를 얻을 수 있지만 여전히 원본과 비슷합니다.

입력 이미지는 255kb이고 처리 된 이미지는 264kb입니다 (+ profile을 사용하여 프로파일을 제거하고 품질을 70 %로 설정). 해당 이미지를 150kb 이상으로 압축하는 방법이 있습니까? 가능합니까? 어떤 ImageMagick 옵션을 사용할 수 있습니까?



답변

나는 항상 사용합니다 :

  • 85의 품질
  • 프로그레시브 (압축 된 압축)
  • 크기 (반경의 0.05 또는 0.5)를 최적화하기위한 초소형 가우시안 블러는 사진의 품질과 크기에 따라 다르며, 특히 jpeg의 크기를 최적화합니다.
  • 모든 주석 또는 exif 태그 제거

imagemagick에서

convert -strip -interlace Plane -gaussian-blur 0.05 -quality 85% source.jpg result.jpg

또는 최신 버전에서 :

magick source.jpg -strip -interlace Plane -gaussian-blur 0.05 -quality 85% result.jpg

이것이 유용하기를 바랍니다.

소스 링크 : http://www.yuiblog.com/blog/2008/12/05/imageopt-4/

댓글의 @Fordi에서 (원하는 경우 댓글을 올리는 것을 잊지 마십시오) : 흐림 효과가 마음에 들지 않으면 -sampling-factor 4:2:0대신 사용하십시오. 이것이하는 일은 눈이 고정되는 휘도 해상도를 망설이지 않고 크로마 채널의 해상도를 절반으로 낮추는 것입니다. 변환의 충실도를 높이려면 파일 크기를 늘리지 않고도 약간의 향상을 얻을 수 있습니다. -define jpeg:dct-method=float즉, 기본 빠른 정수 버전보다 더 정확한 부동 소수점 이산 코사인 변환을 사용하십시오.


답변

내가 사용하고 구글 PageSpeed 통계 이미지 최적화 가이드 라인, 그리고 ImageMagick를 위해 그들은 다음을 권장합니다 :


샘플링 팩터 4 : 2 : 0- 스트립-
품질 85 [범위가 달라질 수 있습니다. 범위 60-80을 사용합니다. 여기서 낮은 숫자는 작은 파일을 의미합니다]-
인터레이스-
색 공간 RGB

ImageMagick의 명령 :

convert image.jpg -sampling-factor 4:2:0 -strip -quality 85 -interlace JPEG -colorspace RGB image_converted.jpg

이러한 옵션을 사용하면 눈에 띄는 손실없이 JPEG 크기를 최대 40 % 절약 할 수 있습니다.


답변

PHP에서 Imagick 클래스를 사용하는 사람들을 위해

$im -> gaussianBlurImage(0.8, 10);      //blur
$im -> setImageCompressionQuality(85);  //set compress quality to 85


답변

개발을 위해 카메라에서 사진 크기를 조정해야하는 경우 :

  • 원본 파일 크기 : 2800 kB
  • 해결 방법 : 3264×2448

명령:

mogrify -quality "97%" -resize 2048x2048 -filter Lanczos -interlace Plane -gaussian-blur 0.05
  • 결과 파일 크기 753 kB
  • 해상도 2048×2048

1920×1080 해상도 모니터를 사용하면 전체 화면에서 변경된 내용을 볼 수 없습니다. 2048 해상도는 최대 360dpi의 품질로 10cm 사진을 개발할 때 가장 좋습니다. 나는 그것을 제거하고 싶지 않습니다.

편집 : 나는 흐릿하게하지 않고 훨씬 더 나은 결과를 얻는 것으로 나타났습니다. 파일을 흐리게 처리하지 않으면 크기가 원본의 50 %이지만 품질은 향상됩니다 (확대시).


답변

JPG와 PNG를 최소화하기위한 유용한 참고 사항과 일반적인 제안을 추가하겠습니다.

우선, ImageMagick 은 입력 jpeg 압축 레벨을 읽거나 더 나은 “추측” …을 추가하므로 전혀 추가하지 않으면 -quality NN출력은 입력과 동일한 레벨을 사용해야합니다. 때로는 중요한 기능이 될 수 있습니다. 그렇지 않으면 기본 수준이다 -quality 92(참조 www.imagemagick.org )

제안은 배치 프로세스를위한 정말 멋진 무료 도구 ImageOptim 에 관한 것입니다.
당신은 (특히 무료 사용 후,뿐만 아니라 및 PNG 파일 작은 JPG를 얻을 수 ImageAlpha [되지 일괄 처리] 또는 무료 Pngyu 일괄 처리를 필요로하는 경우).
뿐만 아니라 이러한 도구는 Mac 및 Win 및 Command Line 용 도구입니다 ( Brew 를 사용하여 설치 한 다음 Brew 공식을 검색 하는 것이 좋습니다 ).


답변

-adaptive-resize 60%제안 된 명령에 추가 했지만-quality 60% .

convert -strip -interlace Plane -gaussian-blur 0.05 -quality 60% -adaptive-resize 60% img_original.jpg img_resize.jpg

이것들은 내 결과였다

  • img_original.jpg = 13,913KB
  • img_resized.jpg = 845KB

해당 변환으로 인해 이미지가 너무 많이 파괴되는지 확실하지 않지만 정직하게 변환이 잘못되었다고 생각하지 않았습니다. 광각 파노라마 였고 세심한 장애물은 신경 쓰지 않았습니다.


답변

@JavisPerez-이미지를 최소한 150kb로 압축 할 수있는 방법이 있습니까? 가능합니까? 어떤 ImageMagick 옵션을 사용할 수 있습니까?

JPG 파일에 쓸 출력 파일 크기를 지정하려면 ImageMagick에 옵션이있는 다음 링크를 참조하십시오.

http://www.imagemagick.org/Usage/formats/#jpg_write
http://www.imagemagick.org/script/command-line-options.php#define

-define jpeg:extent={size}
As of IM v6.5.8-2 you can specify a maximum output filesize for the JPEG image. The size is specified with a suffix. For example "400kb".

convert image.jpg -define jpeg:extent=150kb result.jpg

입력에서 품질 값을 낮추기 때문에 손실과 압축을 풀고 다시 압축하면 품질이 떨어집니다.