Actuellement, je voudrais créer un png transparent avec la plus basse qualité.
Le code:
<?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');
?>
Cependant, il y a quelques problèmes:
Dois-je spécifier un fichier png avant de créer un nouveau fichier? Ou puis-je créer sans aucun fichier png existant?
Avertissement: imagecreatefrompng (test.png): échec d'ouverture du flux: aucun fichier ou répertoire de ce type dans
C:\DSPadmin\DEV\ajax_optipng1.5\create.php sur la ligne 4
Bien qu'il y ait un message d'erreur, il génère toujours un fichier png.Cependant, ce que j'ai trouvé est que le fichier est une image de couleur noire, dois-je spécifier un paramètre pour le rendre transparent?
Merci.
Pour 1) imagecreatefrompng('test.png')
tente d'ouvrir le fichier test.png
Qui peut ensuite être édité avec les fonctions Gd.
To 2) Pour activer la sauvegarde du canal alpha, imagesavealpha($img, true);
est utilisée. Le code suivant crée une image transparente de taille 200x200px en activant l'enregistrement alpha et en la remplissant de transparence.
<?php
$img = imagecreatetruecolor(200, 200);
imagesavealpha($img, true);
$color = imagecolorallocatealpha($img, 0, 0, 0, 127);
imagefill($img, 0, 0, $color);
imagepng($img, 'test.png');
Jeter un coup d'œil à:
Un exemple de fonction copie des fichiers PNG transparents:
<?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) Vous pouvez créer un nouveau fichier png sans aucun fichier existant. 2) Vous obtenez une image en couleur noire car vous utilisez imagecreatetruecolor();
. Il crée une image de la plus haute qualité avec un fond noir. Comme vous avez besoin d'une image de la plus basse qualité, utilisez 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 );
?>
Vous pouvez en savoir plus dans cet article: Comment créer une image en utilisant PHP