이미지 처리 라이브러리 WideImage을 사용하기 시작했으며 생성중인 JPEG 이미지의 품질에 문제가 있습니다. WideImage는 실제로 GD을 사용하므로 GD PHP 이미지 함수를 사용하여 테스트하고 있습니다.PHP 이미지 처리 GD JPEG 품질
내 목표는 이미지의 크기를 조정하는 궁극적이지만, 여기에 크기를 조절 일어나고없는 내 테스트 코드입니다 :
$srcImage = "path/to/image.jpg";
list($width, $height) = getimagesize($srcImage);
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($srcImage);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width, $height);
imagejpg($image_p, "path/to/image_resized.jpg", 100);
이 작동하지만, 낮은 품질보다 원본 이미지의 버전을 세척 출력합니다. 나는 또한 크기 조정을 수행 할 때
이 발생하지만 원본 이미지의 동일한 색상/품질을 유지하려면 : 다음은 중앙 아래로 원래의 분할 옆에 예입니다.
누구에게 어떻게 달성 할 수있는 아이디어가 있습니까? 아마 php.ini에 내가 놓친 것 같은 설정이 있습니까? 나는 또한 imagepng()를 사용하여 시도했지만 많은 결과를 보았다.
GD Support : enabled
GD Version : bundled (2.1.0 compatible)
FreeType Support : enabled
FreeType Linkage : with freetype
FreeType Version : 2.3.11
T1Lib Support : enabled
GIF Read Support : enabled
GIF Create Support: enabled
JPEG Support : enabled
libJPEG Version : 6b
PNG Support : enabled
libPNG Version : 1.2.49
WBMP Support : enabled
XPM Support : enabled
libXpm Version : 30411
XBM Support : enabled
감사 :
내가 PHP 버전 5.3.29을 사용하고, 여기은 phpinfo에서 내 GD 정보는()입니다!
squeamish ossifrage 님의 요청에 따라 original file과 converted file이 있습니다. PHP 다음과 같은 명령을 생성
서버설치 exiftool
:
-편집 아래 올바른 표시 점잔 빼는 ossifrage의 대답에 따라, 나는이 문제를 해결하기 위해 다음과 같은 조치를 취했다
exiftool -TagsFromFile "/var/www/vhosts/path/to/image/the file name.jpg" -icc_profile "/var/www/vhosts/path/to/image-processed/the file name.jpg"
는 PHP의 간부로 명령을 실행() 메소드 :
$arrOutput = array();
$return_var = "";
$directOutput = exec($exiftoolCommand, $arrOutput, $return_var);
매력처럼 작동했습니다!
:이 명령 줄에서 작동해야 /JpgChromaSub.html), 비록 이것이 GD에서 이것을 어떻게 달성 할 수 있는지 모르겠으나 평범한 추측이지만, 결과는 동일한 품질에서도 분명히 다릅니다. –
이 문제는 _ ['imagecopyresampled()]가 한 이미지의 직사각형 부분을 다른 이미지로 복사 ** ** 부드럽게 픽셀 값 **을 보간하기 때문에 발생합니다 (http://php.net/manual/en/function.imagecopyresampled.php) _. ['imagecopy()'] (http://php.net/manual/en/function.imagecopy.php) 또는 ['imagecopyresize()'] (http://php.net/manual/ko/)를 사용해보십시오. function.imagecopyresized.php) 대신에 고유 한 재 인코딩이 일어나기 때문에 훨씬 더 좋아질 것이라고 생각하지 않습니다. – timclutton
대신 ImageMagick을 사용 하시겠습니까? – bbeckford