Maison >développement back-end >tutoriel php >Traitement d'images PHP (Partie 2)
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 = ['1' => 'git', '2' => 'jpeg', '3' => 'png']; $createFunc = 'imagecreatefrom' . $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 = 'image'.$types[$type]; $output($im); imagedestroy($im); } //image('timg.jpg', 'jpg'); image('1.png', 'png');
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 )
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 => 'gif', 2 => 'jpeg', 3 => 'png']; $type = $types[$srcType]; // 原图资源句柄 $create = 'imagecreatefrom' . $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 = 'image' . $type; header("content-type:image/$type"); $output($im); imagedestroy($im); imagedestroy($srcIm); } //thumb('timg.jpg', 200, 150); thumb('timg.jpg', 300, 10000); // 如想按某一边等比例缩放,只要把另一边值设为无限大即可
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 => 'gif', 2 => 'jpeg', 3=> 'png']; $type = $types[$srcType]; // 原图资源句柄 $create = 'imagecreatefrom' . $type; $srcIm = $create($img); // 裁剪图片 imagecopyresampled($im, $srcIm, 0, 0, $x, $y, $width, $height, $width, $height); // 输出图片 $output = 'image'.$type; header("content-type:image/$type"); $output($im); imagedestroy($im); imagedestroy($srcIm); }
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 )
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('timg.jpg'); $src = imagecreatefromjpeg('php.jpg'); list($srcW, $srcH) = getimagesize('php.jpg'); imagecopy($dst, $src, 0, 0, 0, 0, $srcW, $srcH); header("content-type:image/jpeg"); imagejpeg($dst); imagedestroy($dst); imagedestroy($src);
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!