문제

내가 썸네일을 만들 때 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의 대답. 기본적으로 다른 작업을 수행하기 전에 전체 배경을 투명성으로 채워야합니다.

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