imagecreatefrompng() Rend un fond noir au lieu de transparent?
Je créer des vignettes à l'aide de PHP et la librairie GD, mais mon code de tourner la transparence png en un solide de couleur noire, Est-il une solution pour améliorer mon code?
c'est mon php vignette maker code:
function cropImage($nw, $nh, $source, $stype, $dest) {
$size = getimagesize($source);
$w = $size[0];
$h = $size[1];
switch($stype) {
case 'gif':
$simg = imagecreatefromgif($source);
break;
case 'jpg':
$simg = imagecreatefromjpeg($source);
break;
case 'png':
$simg = imagecreatefrompng($source);
break;
}
$dimg = imagecreatetruecolor($nw, $nh);
$wm = $w/$nw;
$hm = $h/$nh;
$h_height = $nh/2;
$w_height = $nw/2;
if($w> $h) {
$adjusted_width = $w / $hm;
$half_width = $adjusted_width / 2;
$int_width = $half_width - $w_height;
imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);
} elseif(($w <$h) || ($w == $h)) {
$adjusted_height = $h / $wm;
$half_height = $adjusted_height / 2;
$int_height = $half_height - $h_height;
imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h);
} else {
imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h);
}
imagejpeg($dimg,$dest,100);
}
Merci
- Utilisation ci-dessous tutoriel pour le recadrage de l'Image stackoverflow.com/questions/43409133/...
Vous devez vous connecter pour publier un commentaire.
Après imagecreatetruecolor():
$simage
est la sortie deimagecreatetruecolor
L'ordre des opérations est important. pour .gif images que j'ai trouvé qu'il fallait que je copie l'image redimensionnée d'abord, puis de céder le fond noir transparent. pour les Png, j'ai trouvé le code ci-dessous images redimensionnées et gardé la transparence des milieux.
aussi, ce code a fonctionné pour moi...
si le code de la réponse correcte ne fonctionnent pas, essayez ceci :
Parfois, si l' .jpg image avez des petites erreurs à l'intérieur (vous ne pouvez pas le voir), tous les pixels transparents tourner à la couleur noire.Essayez d'utiliser:
Voici mon code de test. Il fonctionne pour moi
changement rgb (255, il vous donnera de l'image transparente, plutôt que de noir.
Certains de ce qui précède fait les parties noires de l'image de la tour blanche, alors que certains n'ont pas de travail du tout. Cependant, cela a fonctionné pour moi https://github.com/claviska/SimpleImage/issues/28