現在、最低品質の透明pngを作成したいと考えています。
コード:
<?php
function createImg ($src, $dst, $width, $height, $quality) {
$newImage = imagecreatetruecolor($width,$height);
$source = imagecreatefrompng($src); //imagecreatefrompng() returns an image identifier representing the image obtained from the given filename.
imagecopyresampled($newImage,$source,0,0,0,0,$width,$height,$width,$height);
imagepng($newImage,$dst,$quality); //imagepng() creates a PNG file from the given image.
return $dst;
}
createImg ('test.png','test.png','1920','1080','1');
?>
ただし、いくつかの問題があります。
新しいファイルを作成する前に、pngファイルを指定する必要がありますか?または、既存のpngファイルなしで作成できますか?
警告:imagecreatefrompng(test.png):ストリームを開けませんでした:そのようなファイルまたはディレクトリはありません
4行目のC:\ DSPadmin\DEV\ajax_optipng1.5\create.php
エラーメッセージは表示されますが、それでもpngファイルが生成されますが、ファイルが黒色の画像であることがわかりました。透明にするためにパラメーターを指定する必要がありますか?
ありがとう。
1)へimagecreatefrompng('test.png')
は、Gd関数で編集できる_test.png
_ファイルを開こうとします。
へ2)アルファチャネルの保存を有効にするには、imagesavealpha($img, true);
を使用します。次のコードは、アルファの保存を有効にし、透明度で塗りつぶすことにより、200x200pxサイズの透明な画像を作成します。
_<?php
$img = imagecreatetruecolor(200, 200);
imagesavealpha($img, true);
$color = imagecolorallocatealpha($img, 0, 0, 0, 127);
imagefill($img, 0, 0, $color);
imagepng($img, 'test.png');
_
を見てみましょう:
関数の例は、透明なPNGファイルをコピーします。
<?php
function copyTransparent($src, $output)
{
$dimensions = getimagesize($src);
$x = $dimensions[0];
$y = $dimensions[1];
$im = imagecreatetruecolor($x,$y);
$src_ = imagecreatefrompng($src);
// Prepare alpha channel for transparent background
$alpha_channel = imagecolorallocatealpha($im, 0, 0, 0, 127);
imagecolortransparent($im, $alpha_channel);
// Fill image
imagefill($im, 0, 0, $alpha_channel);
// Copy from other
imagecopy($im,$src_, 0, 0, 0, 0, $x, $y);
// Save transparency
imagesavealpha($im,true);
// Save PNG
imagepng($im,$output,9);
imagedestroy($im);
}
$png = 'test.png';
copyTransparent($png,"png.png");
?>
1)既存のPNGファイルなしで新しいPNGファイルを作成できます。 2)imagecreatetruecolor();
を使用するため、黒色の画像が得られます。黒の背景で最高品質の画像を作成します。最低品質の画像が必要なので、imagecreate();
を使用してください
<?php
$tt_image = imagecreate( 100, 50 ); /* width, height */
$background = imagecolorallocatealpha( $tt_image, 0, 0, 255, 127 ); /* In RGB colors- (Red, Green, Blue, Transparency ) */
header( "Content-type: image/png" );
imagepng( $tt_image );
imagecolordeallocate( $background );
imagedestroy( $tt_image );
?>
この記事で詳細を読むことができます: PHPを使用してイメージを作成する方法