SORU
28 AĞUSTOS 2008, PERŞEMBE


PNG resim saydamlık'in PHP GDlib imagecopyresampled kullanarak korunabilir?

Aşağıdaki PHP kod parçacığını GD ışıklı 128 x 128 tarayıcı-karşıya bir PNG yeniden boyutlandırmak için kullanır. Harika çalışıyor, orijinal görüntünün saydam alanlarına renk Siyah benim durumumda bir katı ile değiştirilir.

imagesavealpha ayarlanmış olsa da, yolunda gitmeyen bir şey var.

Resampled görüntüdeki saydamlığı korumak için en iyi yolu nedir?

$uploadTempFile = $myField[ 'tmp_name' ]
list( $uploadWidth, $uploadHeight, $uploadType ) 
  = getimagesize( $uploadTempFile );

$srcImage = imagecreatefrompng( $uploadTempFile );    
imagesavealpha( $targetImage, true );

$targetImage = imagecreatetruecolor( 128, 128 );
imagecopyresampled( $targetImage, $srcImage, 
                    0, 0, 
                    0, 0, 
                    128, 128, 
                    $uploadWidth, $uploadHeight );

imagepng(  $targetImage, 'out.png', 9 );

CEVAP
28 AĞUSTOS 2008, PERŞEMBE


imagealphablending( $targetImage, false );
imagesavealpha( $targetImage, true );

benim için yaptım. Teşekkürler ceejayoz.

unutmayın, hedef görüntü alfa ayarları, kaynak görüntü değil.

Edit: tam değiştirme kodu. Ayrıca Bkz altında ve yorumlar cevaplar. Bu hiçbir şekilde mükemmel olması garanti değil, ama o zaman ihtiyaçlarımı elde ettin.

$uploadTempFile = $myField[ 'tmp_name' ]
list( $uploadWidth, $uploadHeight, $uploadType ) 
  = getimagesize( $uploadTempFile );

$srcImage = imagecreatefrompng( $uploadTempFile ); 

$targetImage = imagecreatetruecolor( 128, 128 );   
imagealphablending( $targetImage, false );
imagesavealpha( $targetImage, true );

imagecopyresampled( $targetImage, $srcImage, 
                    0, 0, 
                    0, 0, 
                    128, 128, 
                    $uploadWidth, $uploadHeight );

imagepng(  $targetImage, 'out.png', 9 );

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DancingIsAPassion

    DancingIsAPa

    29 AĞUSTOS 2009
  • Showtime

    Showtime

    21 HAZİRAN 2006
  • TotalSeminarsChannel

    TotalSeminar

    16 Mart 2010