Tout d'abord, chargez une image PNG et essayez de la faire pivoter à l'aide d' imagerotate () . Normalement, la zone transparente deviendra noire sans traitement supplémentaire:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// charger PNG image</span></span><span>
</span><span><span class="hljs-variable">$imagePath</span></span><span> = </span><span><span class="hljs-string">'image.png'</span></span><span>;
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefrompng</span></span><span>(</span><span><span class="hljs-variable">$imagePath</span></span><span>);
</span><span><span class="hljs-comment">// installation PNG image为透明背景</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagealphablending</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagesavealpha</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// 旋转image,L'angle est 90 Degré</span></span><span>
</span><span><span class="hljs-variable">$rotatedImage</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagerotate</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">90</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-comment">// 输出旋转后的image</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: image/png'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$rotatedImage</span></span><span>);
</span><span><span class="hljs-comment">// 销毁image资源</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$rotatedImage</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Le code ci-dessus charge et fait pivoter une image PNG, mais notez que le troisième paramètre d' imagerotate () (c'est-à-dire la couleur de remplissage) est de 0 , ce qui signifie que le noir remplira la partie transparente.
Pour maintenir la transparence, la clé est de dire à PHP de maintenir l'image PNG transparente. Avant la fonction ImageRoTate () , vous devez vous assurer que le mode de mélange d'image est désactivé et que le canal alpha est enregistré:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// charger PNG image</span></span><span>
</span><span><span class="hljs-variable">$imagePath</span></span><span> = </span><span><span class="hljs-string">'image.png'</span></span><span>;
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefrompng</span></span><span>(</span><span><span class="hljs-variable">$imagePath</span></span><span>);
</span><span><span class="hljs-comment">// installation PNG image为透明背景</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagealphablending</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>); </span><span><span class="hljs-comment">// Désactivé alpha mélanger</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagesavealpha</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>); </span><span><span class="hljs-comment">// garder alpha allée</span></span><span>
</span><span><span class="hljs-comment">// 旋转image,L'angle est 90 Degré</span></span><span>
</span><span><span class="hljs-variable">$rotatedImage</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagerotate</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">90</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-comment">// 输出旋转后的image</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: image/png'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$rotatedImage</span></span><span>);
</span><span><span class="hljs-comment">// 销毁image资源</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$rotatedImage</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>ImageAlphable Désactivez le mode de mélange du canal alpha pour vous assurer que les zones transparentes ne sont mélangées avec d'autres couleurs pendant le fonctionnement.
ImagesVealpha ($ Image, True); Permet la sauvegarde du canal alpha (informations de transparence) afin que la zone transparente ne soit pas remplie d'autres couleurs, et l'image tournée conservera toujours un arrière-plan transparent.
Si vous souhaitez remplir des couleurs en dehors de la zone transparente lorsque vous faites tourner l'image, plutôt que de la garder transparente, vous pouvez définir d'autres couleurs de remplissage dans Imagerotate () . Par exemple, réglez le remplissage sur blanc:
<span><span><span class="hljs-variable">$rotatedImage</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagerotate</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">90</span></span><span>, </span><span><span class="hljs-title function_ invoke__">imagecolorallocatealpha</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">127</span></span><span>));
</span></span>Cela remplit la zone transparente en blanc, pas noir.
Lors de la sortie de l'image tournée, n'oubliez pas d'utiliser la fonction ImagePng () car elle peut gérer les parties transparentes de l'image PNG. Vous pouvez également enregistrer l'image dans un fichier:
<span><span><span class="hljs-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$rotatedImage</span></span><span>, </span><span><span class="hljs-string">'rotated_image.png'</span></span><span>);
</span></span>