<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Le début de l'article:Rien à voir avec le textePHPExemple de code</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Bienvenue pour lire ce partage technique!<br>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Cet article se concentrera sur l'explication PHP milieu imagefilltoborder Points à noter lors du remplissage d'une fonction dans un arrière-plan transparent。"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
<span class="hljs-comment">/*
* utiliser imagefilltoborder 在透明背景milieu填充heure需要注意de关键问题
*
* PHP de GD 库milieu,imagefilltoborder La fonction est utilisée pour remplir une couleur spécifiée à partir du point de départ,直arriver遇arriver边界颜色为止de区域。
* Mais lorsqu'il s'agit d'un arrière-plan transparent,往往会遇arriver填充不生效或填充区域异常de问题。
*
* Cet article analysera ces problèmes clés,Et donner une solution。
*/</span>
<span class="hljs-comment">/**
* 1. 透明背景de颜色边界判断问题
*
* imagefilltoborder 函数de第三个参数Oui边界颜色(border color)。
* 这个颜色用于确定填充区域de边界。
* Si l'image est un fond transparent,La couleur de la bordure est souvent transparente(alpha allée),
* et imagefilltoborder La transparence est prise en compte lors du jugement de la couleur,
* Provoque une couleur limite et une couleur d'arrière-plan transparente peut être incohérente,Impossible d'identifier correctement les limites。
*
* Solution:
* - 明确utiliserComplètement transparentde颜色索引作为边界颜色。
* - Assurez-vous que les index de couleurs transparents sont attribués et enregistrés correctement lors de la création d'images。
*
* Exemple de code:
*/</span>
</span><span><span class="hljs-variable">$width</span></span><span> = </span><span><span class="hljs-number">200</span></span><span>;
</span><span><span class="hljs-variable">$height</span></span><span> = </span><span><span class="hljs-number">100</span></span><span>;
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatetruecolor</span></span><span>(</span><span><span class="hljs-variable">$width</span></span><span>, </span><span><span class="hljs-variable">$height</span></span><span>);
</span><span><span class="hljs-comment">// Activer alpha allée支持</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">// Créer une couleur complètement transparente</span></span><span>
</span><span><span class="hljs-variable">$transparent</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">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">127</span></span><span>);
</span><span><span class="hljs-comment">// Remplissez un arrière-plan transparent</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagefill</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$transparent</span></span><span>);
</span><span><span class="hljs-comment">// Créer une couleur de remplissage(rouge)</span></span><span>
</span><span><span class="hljs-variable">$fillColor</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</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">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-comment">// utiliser透明颜色作为边界颜色,Remplir des coordonnées(10,10)开始de区域</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagefilltoborder</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-variable">$transparent</span></span><span>, </span><span><span class="hljs-variable">$fillColor</span></span><span>);
</span><span><span class="hljs-comment">// Enregistrer l'image de sortie pour afficher</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">$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 class="hljs-comment">/**
* 2. Note:图像必须Activer alpha allée并保持透明色
*
* Si ce n'est pas appelé imagesavealpha($image, true),
* Même si l'image est initialement remplie de transparent,Également traité comme un fond opaque,
* Provoque une erreur de reconnaissance des limites de remplissage。
*
* 3. utiliser imagecolorallocatealpha Faites attention aux paramètres de transparence lorsque vous définissez des couleurs transparentes
*
* La gamme de transparence est 0(opaque)arriver 127(Complètement transparent),
* 需要确保边界颜色de alpha La valeur est strictement cohérente avec la transparence de fond,Sinon, le jugement échouera。
*
* 4. 边界颜色与起始点颜色de关系
*
* imagefilltoborder Oui“Commencez à remplir à partir du point de départ,直arriver遇arriver边界颜色为止”,
* Si la couleur du point de départ et la couleur limite sont les mêmes,Le remplissage ne se produira pas。
* Par conséquent, il est nécessaire de s'assurer que la couleur du point de départ et la couleur limite sont différentes。
*
* 5. Compatibilité et alternatives
*
* GD La bibliothèque a des limites au traitement transparent,Si un traitement d'image complexe est requis,
* 可考虑utiliser Imagick 等更强大de库。
*
* Résumer:
* 在透明背景milieuutiliser imagefilltoborder heure,关键Oui要正确创建透明边界颜色,
* 并Activer alpha allée保存,Assurez-vous que la couleur de la bordure est strictement adaptée à la couleur de fond transparent。
*/</span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>