문제
내가 썸네일을 만들 때 PNG에서 투명성을 유지하는 데 어려움을 겪고 있는데, 이것에 대한 경험이 있습니까? 모든 도움이 좋을 것입니다. 여기 제가 현재하고있는 일이 있습니다.
$fileName= "../js/ajaxupload/tees/".$fileName;
list($width, $height) = getimagesize($fileName);
$newwidth = 257;
$newheight = 197;
$thumb = imagecreatetruecolor($newwidth, $newheight);
imagealphablending($thumb, true);
$source = imagecreatefrompng($fileName);
imagealphablending($source, true);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagesavealpha($thumb, true);
imagepng($thumb,$newFilename);
해결책
나는 과거에 이런 식으로 성공했습니다.
$thumb = imagecreatetruecolor($newwidth, $newheight);
imagealphablending($thumb, false);
imagesavealpha($thumb, true);
$source = imagecreatefrompng($fileName);
imagealphablending($source, true);
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagepng($thumb,$newFilename);
출력 이미지 품질이 훨씬 더 잘 사용되었습니다 imagecopyresampled()
~보다 imagecopyresized()
다른 팁
색상 투명성 지수를 잊어 버리면 모든 렌더링 제품에서는 작동하지 않습니다. 대신 알파 레이어 마스크를 사용하십시오.
$image = imagecreatetruecolor($size, $size);
imagealphablending($image, false);
imagesavealpha($image, true);
$trans_layer_overlay = imagecolorallocatealpha($image, 220, 220, 220, 127);
imagefill($image, 0, 0, $trans_layer_overlay);
imagecopyresized 투명성을 올바르게 지원하지 않습니다.
imagecopymerge 그렇지는 않지만 크기를 조정하지 않습니다.
해결책? 당신은 아마도 수동으로 물건을 조정하게 될 것입니다.
이러한 기능은 기본 GDLIB 라이브러리에 액세스하는데, 이는 훌륭한 장난감이지만 좋은 결과를 얻을 수있는 것은 아닙니다. 옵션이있는 경우 사용하십시오 Imagemagick 대신에. 단점은 현재 좋은 PHP- 결합이 없으므로 쉘을 통해 액세스 해야하는 것이 일반적으로 공유 호스트에서는 허용되지 않습니다.
보다 "어떻게 크기를 조정합니까 ..."에 대한 Dycey의 대답. 기본적으로 다른 작업을 수행하기 전에 전체 배경을 투명성으로 채워야합니다.
제휴하지 않습니다 StackOverflow