Dans la bibliothèque de traitement d'image de PHP, ImageCreateFrommpng () et ImageGetClip () sont deux fonctions puissantes qui peuvent être utilisées pour lire, traiter et optimiser efficacement les images PNG. Lors du traitement des images, l'utilisation rationnelle de ces deux fonctions peut nous aider à réduire l'utilisation de la mémoire et à améliorer l'efficacité du traitement, en particulier dans les scénarios où les images doivent être recadrées et optimisées. Cet article discutera de la façon d'optimiser le processus de traitement d'image avec ces deux fonctions.
ImageCreateFrommpng () est une fonction de création d'image dans PHP qui crée une nouvelle ressource d'image à partir d'un fichier PNG. Grâce à cette fonction, nous pouvons charger le fichier d'image PNG en mémoire pour un traitement ultérieur plus facile. Sa syntaxe de base est la suivante:
<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-string">'path_to_png_file.png'</span></span><span>);
</span></span>
Cette fonction renvoie une ressource d'image, qui peut être utilisée pour effectuer une série d'opérations telles que la mise à l'échelle de l'image, le recadrage et le réglage des couleurs.
ImageGetClip () est une fonction de la bibliothèque PHP GD, qui est principalement utilisée pour obtenir la zone de recadrage d'une image. Il peut obtenir des informations sur la zone transparente ou valide d'une image spécifiée. De cette façon, l'utilisateur peut connaître la partie réelle de l'image, éviter le traitement des zones non valides, améliorant ainsi l'efficacité.
Sa syntaxe de base est la suivante:
<span><span><span class="hljs-variable">$clip</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagegetclip</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span></span>
Cette fonction renvoie les coordonnées et la taille de la zone de recadrage d'images. En utilisant ces informations, nous pouvons recadrer avec précision et ajuster l'image pour éviter le traitement des données inutiles.
En utilisant ImageCreateFrommpng () et ImageGetClip () raisonnablement en conjonction avec les images PNG, nous pouvons éviter le chargement et le traitement des zones non valides, améliorant ainsi l'efficacité du traitement global d'image. Voici un exemple simple montrant comment utiliser ces deux fonctions pour optimiser le traitement d'image.
Supposons que nous ayons une image PNG avec de nombreuses zones transparentes. Nous voulons recadrer ces zones transparentes et sauver l'image transformée.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 1. chargerPNGimage</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-string">'input_image.png'</span></span><span>);
</span><span><span class="hljs-comment">// 2. 获取image的裁剪区域</span></span><span>
</span><span><span class="hljs-variable">$clip</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagegetclip</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span><span><span class="hljs-comment">// 3. Vérifiez la zone des cultures</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$clip</span></span><span>) {
</span><span><span class="hljs-variable">$x</span></span><span> = </span><span><span class="hljs-variable">$clip</span></span><span>[</span><span><span class="hljs-string">'x'</span></span><span>];
</span><span><span class="hljs-variable">$y</span></span><span> = </span><span><span class="hljs-variable">$clip</span></span><span>[</span><span><span class="hljs-string">'y'</span></span><span>];
</span><span><span class="hljs-variable">$width</span></span><span> = </span><span><span class="hljs-variable">$clip</span></span><span>[</span><span><span class="hljs-string">'width'</span></span><span>];
</span><span><span class="hljs-variable">$height</span></span><span> = </span><span><span class="hljs-variable">$clip</span></span><span>[</span><span><span class="hljs-string">'height'</span></span><span>];
</span><span><span class="hljs-comment">// 4. 根据裁剪区域创建新的image</span></span><span>
</span><span><span class="hljs-variable">$cropped_image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecrop</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, [</span><span><span class="hljs-string">'x'</span></span><span> => </span><span><span class="hljs-variable">$x</span></span><span>, </span><span><span class="hljs-string">'y'</span></span><span> => </span><span><span class="hljs-variable">$y</span></span><span>, </span><span><span class="hljs-string">'width'</span></span><span> => </span><span><span class="hljs-variable">$width</span></span><span>, </span><span><span class="hljs-string">'height'</span></span><span> => </span><span><span class="hljs-variable">$height</span></span><span>]);
</span><span><span class="hljs-comment">// 5. 保存裁剪后的image</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$cropped_image</span></span><span> !== </span><span><span class="hljs-literal">FALSE</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$cropped_image</span></span><span>, </span><span><span class="hljs-string">'output_image.png'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$cropped_image</span></span><span>);
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Aucune zone de culture valide n'a été trouvée。"</span></span><span>;
}
</span><span><span class="hljs-comment">// 6. 销毁原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-meta">?></span></span><span>
</span></span>
En utilisant ImageGetClip () pour obtenir la zone valide de l'image, seules les parties utiles de l'image seront traitées. Cela signifie que nous ne chargeons plus ou ne traitons plus avec des zones transparentes et non valides, ce qui économise beaucoup de ressources de mémoire.
Si nous ne rassemblons pas la zone transparente à l'avance, l'image entière devra être traitée, ce qui prendra plus de temps. Avec ImageGetClip (), nous pouvons nous assurer que seules les parties de l'image sont vraiment nécessaires, améliorant ainsi la vitesse de traitement.
ImageGetClip () fournit les coordonnées et la taille exactes de la zone de découpage, en évitant le processus lourd de jugement manuellement des zones transparentes. De cette façon, l'effet de culture est plus précis et la probabilité d'erreur est réduite.
En utilisant ImageCreateFrommpng () et ImageGetClip () raisonnablement en conjonction avec ImageCreateFromePng () et ImageGetClip () , nous pouvons effectuer un traitement d'image plus efficacement et avec précision. Surtout lors du traitement des images PNG contenant des zones transparentes, la combinaison de ces deux fonctions peut réduire considérablement l'utilisation de la mémoire, améliorer la vitesse de traitement et assurer la précision des effets de recadrage.
Si vous développez une application PHP impliquant un traitement d'image, l'utilisation de ces deux fonctions vous aidera à optimiser le chargement et le traitement des images et améliore les performances globales de votre application.