Maison > développement back-end > tutoriel php > PHP implémente des outils de traitement d'images capables d'ajouter des filigranes et de générer des compétences thumbnails_php

PHP implémente des outils de traitement d'images capables d'ajouter des filigranes et de générer des compétences thumbnails_php

jacklove
Libérer: 2023-04-02 07:44:01
original
1599 Les gens l'ont consulté

Cet article présente principalement PHP pour implémenter des outils de traitement d'images capables d'ajouter des filigranes et de générer des vignettes. Il implique les compétences opérationnelles liées à PHP pour l'affichage, l'enregistrement, la compression, les filigranes, etc. Les amis qui en ont besoin peuvent s'y référer

L'exemple de cet article décrit l'implémentation PHP d'une classe d'outils de traitement d'image qui peut ajouter des filigranes et générer des vignettes. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

ImageTool.class.php

<?php
class ImageTool
{
  private $imagePath;//图片路径
  private $outputDir;//输出文件夹
  private $memoryImg;//内存图像
  public function __construct($imagePath, $outputDir = null)
  {
    $this->imagePath = $imagePath;
    $this->outputDir = $outputDir;
    $this->memoryImg = null;
  }
  /**
   * 显示内存中的图片
   * @param $image
   */
  public function showImage()
  {
    if ($this->memoryImg != null) {
      $info = getimagesize($this->imagePath);
      $type = image_type_to_extension($info[2], false);
      header(&#39;Content-type:&#39; . $info[&#39;mime&#39;]);
      $funs = "image{$type}";
      $funs($this->memoryImg);
      imagedestroy($this->memoryImg);
      $this->memoryImg = null;
    }
  }
  /**将图片以文件形式保存
   * @param $image
   */
  private function saveImage($image)
  {
    $info = getimagesize($this->imagePath);
    $type = image_type_to_extension($info[2], false);
    $funs = "image{$type}";
    if (empty($this->outputDir)) {
      $funs($image, md5($this->imagePath) . &#39;.&#39; . $type);
    } else {
      $funs($image, $this->outputDir . md5($this->imagePath) . &#39;.&#39; . $type);
    }
  }
  /**
   * 压缩图片
   * @param $width 压缩后宽度
   * @param $height 压缩后高度
   * @param bool $output 是否输出文件
   * @return resource
   */
  public function compressImage($width, $height, $output = false)
  {
    $image = null;
    $info = getimagesize($this->imagePath);
    $type = image_type_to_extension($info[2], false);
    $fun = "imagecreatefrom{$type}";
    $image = $fun($this->imagePath);
    $thumbnail = imagecreatetruecolor($width, $height);
    imagecopyresampled($thumbnail, $image, 0, 0, 0, 0, $width, $height, $info[0], $info[1]);
    imagedestroy($image);
    if ($output) {
      $this->saveImage($thumbnail);
    }
    $this->memoryImg = $thumbnail;
    return $this;
  }
  /**
   * 为图像添加文字标记
   *
   * @param $content 文本内容
   * @param $size 字体大小
   * @param $font 字体样式
   * @param bool $output 是否输出文件
   * @return $this
   */
  public function addTextmark($content, $size, $font, $output = false)
  {
    $info = getimagesize($this->imagePath);
    $type = image_type_to_extension($info[2], false);
    $fun = "imagecreatefrom{$type}";
    $image = $fun($this->imagePath);
    $color = imagecolorallocatealpha($image, 0, 0, 0, 80);
    $posX = imagesx($image) - strlen($content) * $size / 2;
    $posY = imagesy($image) - $size / 1.5;
    imagettftext($image, $size, 0, $posX, $posY, $color, $font, $content);
    if ($output) {
      $this->saveImage($image);
    }
    $this->memoryImg = $image;
    return $this;
  }
  /**
   * 为图片添加水印
   *
   * @param $watermark 水印图片路径
   * @param $alpha 水印透明度(0-100)
   * @param bool $output 是否输出文件
   * @return $this
   */
  public function addWatermark($watermark, $alpha, $output = false)
  {
    $image_info = getimagesize($this->imagePath);
    $image_type = image_type_to_extension($image_info[2], false);
    $image_fun = "imagecreatefrom{$image_type}";
    $image = $image_fun($this->imagePath);
    $mark_info = getimagesize($watermark);
    $mark_type = image_type_to_extension($mark_info[2], false);
    $mark_fun = "imagecreatefrom{$mark_type}";
    $mark = $mark_fun($watermark);
    $posX = imagesx($image) - imagesx($mark);
    $posY = imagesy($image) - imagesy($mark);
    imagecopymerge($image, $mark, $posX, $posY, 0, 0, $mark_info[0], $mark_info[1], $alpha);
    if ($output) {
      $this->saveImage($image);
    }
    $this->memoryImg = $image;
    return $this;
  }
}
Copier après la connexion

Utilisation d'ImageTool

Importez d'abord l'outil ImageTool :

require_once &#39;ImageTool.class.php&#39;;
Copier après la connexion

Instanciez ensuite l'objet ImageTool :

$imageTool = new ImageTool(&#39;img/oppman.jpeg&#39;, &#39;out/&#39;);//图片路径、输出文件夹
Copier après la connexion

1. Générez des images compressées

$imageTool->compressImage(350, 250, true);//压缩宽度、压缩高度、是否保存
$imageTool->showImage();
Copier après la connexion

2. Ajouter un filigrane de texte

$imageTool->addTextmark(&#39;一拳超人&#39;, 50, &#39;res/micro.ttf&#39;, true);//内容、尺寸、字体、是否保存
$imageTool->showImage();
Copier après la connexion

3. Ajouter un filigrane d'image

$imageTool->addWatermark(&#39;res/logo.jpeg&#39;, 100, true);//水印路径、透明度、是否保存
$imageTool->showImage();
Copier après la connexion

Utilisé uniquement comme sortie d'image temporaire :

$imageTool->addTextmark(&#39;快捷输出&#39;, 50, &#39;res/micro.ttf&#39;)->showImage();
Copier après la connexion

PS : Voici quelques outils de traitement d'image plus pratiques recommandés pour tout le monde. Utilisation de référence :

Outil de recadrage/génération d'images en ligne :
http://tools.jb51.net/ aideddesign/imgcut

Outil BASE64 de conversion d'images en ligne :
http://tools.jb51.net/transcoding/img2base64

Outil de génération d'icônes ICO en ligne :
http://tools.jb51.net/aideddesign/ico_img

Outil de création d'icônes d'e-mail en ligne :
http://tools.jb51.net/email/mailillogo

Outil de conversion de format d'image en ligne (jpg/bmp/gif/png) :
http://tools.jb51.net/aideddesign/picext

Articles qui pourraient vous intéresser :

Implémentation PHP Une explication sur la façon d'imprimer un arbre binaire en ordre zigzag

Une explication sur la façon d'obtenir une image d'arbre binaire avec PHP

PHP pour obtenir la liste chaînée Explication de la méthode du Kème dernier nœud

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!

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