Maison > développement back-end > tutoriel php > Traitement d'images PHP (Partie 2)

Traitement d'images PHP (Partie 2)

齐天大圣
Libérer: 2020-05-04 14:42:37
original
168 Les gens l'ont consulté

Gestion de l'arrière-plan de l'image

Ce que nous avons appris auparavant pour créer une toile était de commencer par un blanc, puis de le remplir de couleur, de dessiner des points, du texte , etc. . Nous pouvons désormais charger l'arrière-plan directement à partir d'une image existante. Il existe plusieurs fonctions couramment utilisées :

imagecreatefrompng(), imagecreatefromjpeg(), imagecreatefromgif(). Ils indiquent le chargement du format d'image correspondant.

De plus, nous apprenons une autre fonction, getimagesize(), qui renvoie un tableau de quatre cellules. L'index 0 contient la valeur en pixels de la largeur de l'image et l'index 1 contient la valeur en pixels de la hauteur de l'image. L'index 2 est la marque du type d'image : 1 = GIF, 2 = JPG, 3 = PNG,...

<?php
/**
 * 向不同的格式的图片中间画一个字符
 */
function image($imgfile, $string)
{
    list($width, $height, $type) = getimagesize($imgfile);
    $types = [&#39;1&#39; => &#39;git&#39;, &#39;2&#39; => &#39;jpeg&#39;, &#39;3&#39; => &#39;png&#39;];
    
    $createFunc = &#39;imagecreatefrom&#39; . $types[$type];
    $im = $createFunc($imgfile);
    
    $textColor = imagecolorallocate($im, 255, 0, 0);
    $x = ($width - imagefontwidth(5) * strlen($string)) / 2;
    $y = ($height - imagefontheight(5)) / 2;
   
    imagestring($im, 5, $x, $y, $string, $textColor);
    
    header("Content-type:image/".$types[$type]);
    $output = &#39;image&#39;.$types[$type];
    $output($im);
    imagedestroy($im);
}
//image(&#39;timg.jpg&#39;, &#39;jpg&#39;);
image(&#39;1.png&#39;, &#39;png&#39;);
Copier après la connexion

Mise à l'échelle et recadrage de l'image

Ce qui suit est une fonction très puissant et peut compléter les fonctions de mise à l'échelle et de recadrage de l'image.

Le prototype de la fonction est :

bool imagecopyresampled (
 resource $dst_image , 
 resource $src_image , 
 int $dst_x , 
 int $dst_y , 
 int $src_x , 
 int $src_y , 
 int $dst_w , 
 int $dst_h , 
 int $src_w , 
 int $src_h 
)
Copier après la connexion

imagecopyresampled() Copie une zone carrée d'une image sur une autre image, en interpolant en douceur les valeurs des pixels, ce qui réduit notamment la taille de l'image. tout en gardant une grande clarté.

Paramètres

  • ressource de connexion d'image cible dst_image.

  • ressource de connexion d'image source src_image.

  • point de coordonnées X cible dst_x.

  • dst_y Point de coordonnées Y cible.

  • src_x Point de coordonnées X de la source.

  • src_y Point de coordonnées Y de la source.

  • largeur cible dst_w.

  • hauteur cible dst_h.

  • src_w La largeur de l'image source.

  • src_h La hauteur de l'image source.

Vignette de l'image

/**
 * 图片等比例缩放
 * @param string img 原图路径
 * @param int width 新图宽度
 * @param int height 新图高度
 */
function thumb($img, $width = 0, $height = 0)
{
    // 获取图片信息
    list($srcW, $srcH, $srcType) = getimagesize($img);
    $types = [1 => &#39;gif&#39;, 2 => &#39;jpeg&#39;, 3 => &#39;png&#39;];
    $type  = $types[$srcType];
    
    // 原图资源句柄
    $create = &#39;imagecreatefrom&#39; . $type;
    $srcIm  = $create($img);
    $ratioOrig = $srcW / $srcH;
    if ($width / $height > $ratioOrig) {
        $width = $height * $ratioOrig;
    } else {
        $height = $width / $ratioOrig;
    }
    
    // 新图资源
    $im = imagecreatetruecolor($width, $height);
    imagecopyresampled($im, $srcIm, 0, 0, 0, 0, 
        $width, $height, $srcW, $srcH);
    $output = &#39;image&#39; . $type;
    header("content-type:image/$type");
    $output($im);
    imagedestroy($im);
    imagedestroy($srcIm);
}
//thumb(&#39;timg.jpg&#39;, 200, 150);
thumb(&#39;timg.jpg&#39;, 300, 10000);    
// 如想按某一边等比例缩放,只要把另一边值设为无限大即可
Copier après la connexion

Recadrage de l'image

/**
 * @param string $img 裁剪图路径
 * @param int $x 裁剪点x坐标
 * @param int $y 裁剪点y坐标
 * @param int $width 图片裁剪的宽度
 * @param int $height 图片裁剪的高度
 */
function crop ($img, $x, $y, $width, $height)
{
    // 获取图片信息
    $im = imagecreatetruecolor($width, $height);
    $srcType = getimagesize($img)[2];
    $types = [1 => &#39;gif&#39;, 2 => &#39;jpeg&#39;, 3=> &#39;png&#39;];
    $type = $types[$srcType];
    // 原图资源句柄
    $create = &#39;imagecreatefrom&#39; . $type;
    $srcIm = $create($img);
    // 裁剪图片
    imagecopyresampled($im, $srcIm, 0, 0,
         $x, $y, $width, $height, $width, $height);
    // 输出图片
    $output = &#39;image&#39;.$type;
    header("content-type:image/$type");
    $output($im);
    imagedestroy($im);
    imagedestroy($srcIm);
}
Copier après la connexion

Filigrane d'image

L'utilisation d'imagecopyresampled peut compléter la fonction de filigrane d'image, mais ici nous apprenons une autre fonction de copie d'image.

bool imagecopy(
 resource $dst_im,
    resource $src_im,
    int $dst_x, 
    int $dst_y, 
    int $src_x, 
    int $src_y, 
    int $src_w, 
    int $src_h
)
Copier après la connexion

Copiez la partie de l'image src_im dont les coordonnées commencent à src_x, src_y, ont une largeur de src_w et une hauteur de src_h à la position de l'image dst_im où les coordonnées sont dst_x et dst_y.

<?php
// 图片水印
    
$dst = imagecreatefromjpeg(&#39;timg.jpg&#39;);
$src = imagecreatefromjpeg(&#39;php.jpg&#39;);

list($srcW, $srcH) = getimagesize(&#39;php.jpg&#39;);
imagecopy($dst, $src, 0, 0, 0, 0, $srcW, $srcH);

header("content-type:image/jpeg");
imagejpeg($dst);
imagedestroy($dst);
imagedestroy($src);
Copier après la connexion

Traitement dimages PHP (Partie 2)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
1
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal