2011-09-27 1 views
4

transparence plz help로 이미지 PNG의 크기를 조정하고 싶습니다.이미지 크기 조정 PNG with transparentare

function resize($width,$height) { 

    $new_image = imagecreatetruecolor($width, $height); 

    imagealphablending($new_image, false); 
    imagesavealpha($new_image,true); 
    $transparent = imagecolorallocatealpha($new_image, 255, 255, 255, 127); 
    imagefilledrectangle($new_image, 0, 0, $width, $height, $transparent); 

    imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight()); 
    $this->image = $new_image; 
} 
+2

을 그리고 그 결과는 무엇인가? 이미지 없음? 투명성이 상실 되었습니까? –

+0

그 결과는 내가 투명성을 잃었습니다. –

답변

2

function createThumb($upfile, $dstfile, $max_width, $max_height){ 
     $size = getimagesize($upfile); 
     $width = $size[0]; 
     $height = $size[1]; 
     $x_ratio = $max_width/$width; 
     $y_ratio = $max_height/$height; 
     if(($width <= $max_width) && ($height <= $max_height)) { 
       $tn_width = $width; 
       $tn_height = $height; 
     } elseif (($x_ratio * $height) < $max_height) { 
       $tn_height = ceil($x_ratio * $height); 
       $tn_width = $max_width; 
     } else { 
       $tn_width = ceil($y_ratio * $width); 
       $tn_height = $max_height; 
     } 
     if($size['mime'] == "image/jpeg"){ 
       $src = ImageCreateFromJpeg($upfile); 
       $dst = ImageCreateTrueColor($tn_width, $tn_height); 
       imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height); 
       imageinterlace($dst, true); 
       ImageJpeg($dst, $dstfile, 100); 
     } else if ($size['mime'] == "image/png"){ 
       $src = ImageCreateFrompng($upfile); 

    // integer representation of the color black (rgb: 0,0,0) 
    $background = imagecolorallocate($src, 0, 0, 0); 
    // removing the black from the placeholder 
    imagecolortransparent($src, $background); 

    // turning off alpha blending (to ensure alpha channel information 
    // is preserved, rather than removed (blending with the rest of the 
    // image in the form of black)) 
    imagealphablending($src, false); 

    // turning on alpha channel information saving (to ensure the full range 
    // of transparency is preserved) 
    imagesavealpha($src, true); 
       $dst = ImageCreateTrueColor($tn_width, $tn_height); 
       imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height); 
       Imagepng($dst, $dstfile); 

     } else { 

       $src = ImageCreateFromGif($upfile); 
       $dst = ImageCreateTrueColor($tn_width, $tn_height); 
       imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height); 
       imagegif($dst, $dstfile); 
     } 
    } 
+0

불행히도 작동하지 않습니다 : ( –

+0

무슨 값을 보내고 있습니까? 무슨 메시지를 얻고 있습니까? "작동하지 않습니다"라는 뜻입니까? –

+0

나는 이것을 시도했습니다 $ image-> createThumb ($ src [ 'final_file'], $ src [ 'final_file_100'], 100, 100), 투명도가없는 이미지를 얻었습니까? –

0

가 사용하기 간단한 오픈 소스 라이브러리 PHP Image Magician있다라는 업데이트]이

을 시도해보십시오 다음은 코드입니다. 그것은 GD를 사용하고 투명성을 기준으로 사용의

예 지원

$magicianObj = new imageLib('racecar.png'); 
$magicianObj -> resizeImage(100, 200, 'crop'); 
$magicianObj -> saveImage('racecar_small.png');