Heim >Backend-Entwicklung >PHP-Tutorial >PHP implementiert Bildverarbeitungstools, die Wasserzeichen hinzufügen und thumbnails_php-Fähigkeiten generieren können

PHP implementiert Bildverarbeitungstools, die Wasserzeichen hinzufügen und thumbnails_php-Fähigkeiten generieren können

jacklove
jackloveOriginal
2018-06-30 17:51:321564Durchsuche

In diesem Artikel wird hauptsächlich PHP für die Implementierung von Bildverarbeitungstools vorgestellt, die Wasserzeichen hinzufügen und Miniaturansichten generieren können. Dabei geht es um die mit PHP verbundenen Betriebsfähigkeiten für Bildanzeige, Speicherung, Komprimierung, Wasserzeichen usw. Freunde, die es benötigen, können darauf verweisen

Das Beispiel in diesem Artikel beschreibt die PHP-Implementierung einer Bildverarbeitungstoolklasse, die Wasserzeichen hinzufügen und Miniaturansichten generieren kann. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

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;
  }
}

ImageTool verwendet

importiert zuerst das ImageTool-Tool:

require_once &#39;ImageTool.class.php&#39;;

und dann das ImageTool-Objekt instanziieren:

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

1. Komprimierte Bilder generieren

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

2. Textwasserzeichen hinzufügen

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

3. Bildwasserzeichen hinzufügen

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

Nur ​​als temporäre Bildausgabe:

$imageTool->addTextmark(&#39;快捷输出&#39;, 50, &#39;res/micro.ttf&#39;)->showImage();

PS: Hier sind einige weitere praktische Bildverarbeitungstools, die Ihnen als Referenz empfohlen werden:

Online-Tool zum Zuschneiden/Generieren von Bildern:
http://tools.jb51.net/aideddesign/imgcut

Online BASE64-Tool zur Bildkonvertierung:
http://tools.jb51.net/transcoding/img2base64

Online-Generierungstool für ICO-Symbole:
http://tools.jb51.net/aideddesign/ico_img

Online-Tool zur Erstellung von E-Mail-Symbolen:
http://tools. jb51.net/email/mailillogo

Tool zur Online-Bildformatkonvertierung (jpg/bmp/gif/png):
http://tools.jb51 .net/aideddesign/picext

Artikel, die Sie interessieren könnten:

Erklärung zum Drucken von Binärbäumen in Zick-Zack-Reihenfolge mit PHP

Erklärung der Methode zum Erhalten des Binärbaumbilds mit PHP

Erklärung der Methode zum Erhalten des K-ten Knotens vom letzten in der verknüpften Liste mit PHP

Das obige ist der detaillierte Inhalt vonPHP implementiert Bildverarbeitungstools, die Wasserzeichen hinzufügen und thumbnails_php-Fähigkeiten generieren können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn