摘自织梦CMS中的图片处理类,摘自织梦cms图片
摘自织梦CMS中的图片处理类,摘自织梦cms图片
本文实例讲述了摘自织梦CMS中的图片处理类。分享给大家供大家参考。具体如下:
<?php if(!defined('DEDEINC')) exit('dedecms'); /** * 图像处理类 * * @version $Id: image.class.php 1 18:10 2010年7月5日Z tianya $ * @package DedeCMS.Libraries * @copyright Copyright (c) 2007 - 2010, DesDev, Inc. * @license http://help.dedecms.com/usersguide/license.html * @link http://www.dedecms.com */ class image { var $attachinfo; var $targetfile; //图片路径 var $imagecreatefromfunc; var $imagefunc; var $attach; var $animatedgif; var $watermarkquality; var $watermarktext; var $thumbstatus; var $watermarkstatus; // 析构函数,兼容PHP4 function image($targetfile, $cfg_thumb, $cfg_watermarktext, $photo_waterpos, $photo_diaphaneity, $photo_wheight, $photo_wwidth, $cfg_watermarktype, $photo_marktrans,$trueMarkimg, $attach = array()) { $this->__construct($targetfile, $cfg_thumb, $cfg_watermarktext, $photo_waterpos, $photo_diaphaneity, $photo_wheight, $photo_wwidth, $cfg_watermarktype, $photo_marktrans,$trueMarkimg, $attach); } // 析构函数 function __construct($targetfile, $cfg_thumb, $cfg_watermarktext, $photo_waterpos, $photo_diaphaneity, $photo_wheight, $photo_wwidth, $cfg_watermarktype, $photo_marktrans,$trueMarkimg, $attach = array()) { $this->thumbstatus = $cfg_thumb; $this->watermarktext = $cfg_watermarktext; $this->watermarkstatus = $photo_waterpos; $this->watermarkquality = $photo_marktrans; $this->watermarkminwidth = $photo_wwidth; $this->watermarkminheight = $photo_wheight; $this->watermarktype = $cfg_watermarktype; $this->watermarktrans = $photo_diaphaneity; $this->animatedgif = 0; $this->targetfile = $targetfile; $this->attachinfo = @getimagesize($targetfile); $this->attach = $attach; switch($this->attachinfo['mime']) { case 'image/jpeg': $this->imagecreatefromfunc = function_exists('imagecreatefromjpeg') ? 'imagecreatefromjpeg' : ''; $this->imagefunc = function_exists('imagejpeg') ? 'imagejpeg' : ''; break; case 'image/gif': $this->imagecreatefromfunc = function_exists('imagecreatefromgif') ? 'imagecreatefromgif' : ''; $this->imagefunc = function_exists('imagegif') ? 'imagegif' : ''; break; case 'image/png': $this->imagecreatefromfunc = function_exists('imagecreatefrompng') ? 'imagecreatefrompng' : ''; $this->imagefunc = function_exists('imagepng') ? 'imagepng' : ''; break; }//为空则匹配类型的函数不存在 $this->attach['size'] = empty($this->attach['size']) ? @filesize($targetfile) : $this->attach['size']; if($this->attachinfo['mime'] == 'image/gif') { $fp = fopen($targetfile, 'rb'); $targetfilecontent = fread($fp, $this->attach['size']); fclose($fp); $this->animatedgif = strpos($targetfilecontent, 'NETSCAPE2.0') === false ? 0 : 1; } } /** * 生成缩略图 * * @access public * @param int $thumbwidth 图片宽度 * @param int $thumbheight 图片高度 * @param int $preview 是否预览 * @return void */ function thumb($thumbwidth, $thumbheight, $preview = 0) { $this->thumb_gd($thumbwidth, $thumbheight, $preview); if($this->thumbstatus == 2 && $this->watermarkstatus) { $this->image($this->targetfile, $this->attach); $this->attach['size'] = filesize($this->targetfile); } } /** * 图片水印 * * @access public * @param int $preview 是否预览 * @return void */ function watermark($preview = 0) { if($this->watermarkminwidth && $this->attachinfo[0] <= $this->watermarkminwidth && $this->watermarkminheight && $this->attachinfo[1] <= $this->watermarkminheight) { return ; } $this->watermark_gd($preview); } /** * 使用gd生成缩略图 * * @access public * @param int $thumbwidth 图片宽度 * @param int $thumbheight 图片高度 * @param int $preview 是否预览 * @return void */ function thumb_gd($thumbwidth, $thumbheight, $preview = 0) { if($this->thumbstatus && function_exists('imagecreatetruecolor') && function_exists('imagecopyresampled') && function_exists('imagejpeg')) { $imagecreatefromfunc = $this->imagecreatefromfunc; $imagefunc = $this->thumbstatus == 1 ? 'imagejpeg' : $this->imagefunc; list($imagewidth, $imageheight) = $this->attachinfo; if(!$this->animatedgif && ($imagewidth >= $thumbwidth || $imageheight >= $thumbheight)) { $attach_photo = $imagecreatefromfunc($this->targetfile); $x_ratio = $thumbwidth / $imagewidth; $y_ratio = $thumbheight / $imageheight; if(($x_ratio * $imageheight) < $thumbheight) { $thumb['height'] = ceil($x_ratio * $imageheight); $thumb['width'] = $thumbwidth; } else { $thumb['width'] = ceil($y_ratio * $imagewidth); $thumb['height'] = $thumbheight; } $targetfile = !$preview ? ($this->thumbstatus == 1 ? $this->targetfile.'.thumb.jpg' : $this->targetfile) : './watermark_tmp.jpg'; $thumb_photo = imagecreatetruecolor($thumb['width'], $thumb['height']); imagecopyresampled($thumb_photo, $attach_photo, 0, 0, 0, 0, $thumb['width'], $thumb['height'], $imagewidth, $imageheight); if($this->attachinfo['mime'] == 'image/jpeg') { $imagefunc($thumb_photo, $targetfile, 100); } else { $imagefunc($thumb_photo, $targetfile); } $this->attach['thumb'] = $this->thumbstatus == 1 ? 1 : 0; } } } /** * 使用gd进行水印 * * @access public * @param int $preview 是否预览 * @return void */ function watermark_gd($preview = 0) { if($this->watermarkstatus && function_exists('imagecopy') && function_exists('imagealphablending') && function_exists('imagecopymerge')) { $imagecreatefunc = $this->imagecreatefromfunc; $imagefunc = $this->imagefunc; list($imagewidth, $imageheight) = $this->attachinfo; if($this->watermarktype < 2) { $watermark_file = $this->watermarktype == 1 ? DEDEDATA.'/mark/mark.png' : DEDEDATA.'/mark/mark.gif'; $watermarkinfo = @getimagesize($watermark_file); $watermark_logo = $this->watermarktype == 1 ? @imagecreatefrompng($watermark_file) : @imagecreatefromgif($watermark_file); if(!$watermark_logo) { return ; } list($logowidth, $logoheight) = $watermarkinfo; } else { $box = @imagettfbbox($this->watermarktext['size'], $this->watermarktext['angle'], $this->watermarktext['fontpath'],$this->watermarktext['text']); $logowidth = max($box[2], $box[4]) - min($box[0], $box[6]); $logoheight = max($box[1], $box[3]) - min($box[5], $box[7]); $ax = min($box[0], $box[6]) * -1; $ay = min($box[5], $box[7]) * -1; } $wmwidth = $imagewidth - $logowidth; $wmheight = $imageheight - $logoheight; if(($this->watermarktype < 2 && is_readable($watermark_file) || $this->watermarktype == 2) && $wmwidth > 10 && $wmheight > 10 && !$this->animatedgif) { switch($this->watermarkstatus) { case 1: $x = +5; $y = +5; break; case 2: $x = ($imagewidth - $logowidth) / 2; $y = +5; break; case 3: $x = $imagewidth - $logowidth - 5; $y = +5; break; case 4: $x = +5; $y = ($imageheight - $logoheight) / 2; break; case 5: $x = ($imagewidth - $logowidth) / 2; $y = ($imageheight - $logoheight) / 2; break; case 6: $x = $imagewidth - $logowidth - 5; $y = ($imageheight - $logoheight) / 2; break; case 7: $x = +5; $y = $imageheight - $logoheight - 5; break; case 8: $x = ($imagewidth - $logowidth) / 2; $y = $imageheight - $logoheight - 5; break; case 9: $x = $imagewidth - $logowidth - 5; $y = $imageheight - $logoheight -5; break; } $dst_photo = @imagecreatetruecolor($imagewidth, $imageheight); $target_photo = $imagecreatefunc($this->targetfile); imagecopy($dst_photo, $target_photo, 0, 0, 0, 0, $imagewidth, $imageheight); if($this->watermarktype == 1) { imagecopy($dst_photo, $watermark_logo, $x, $y, 0, 0, $logowidth, $logoheight); } elseif($this->watermarktype == 2) { if(($this->watermarktext['shadowx'] || $this->watermarktext['shadowy']) && $this->watermarktext['shadowcolor']) { $shadowcolorrgb = explode(',', $this->watermarktext['shadowcolor']); $shadowcolor = imagecolorallocate($dst_photo, $shadowcolorrgb[0], $shadowcolorrgb[1], $shadowcolorrgb[2]); imagettftext($dst_photo, $this->watermarktext['size'], $this->watermarktext['angle'], $x + $ax + $this->watermarktext['shadowx'], $y + $ay + $this->watermarktext['shadowy'], $shadowcolor, $this->watermarktext['fontpath'], $this->watermarktext['text']); } $colorrgb = explode(',', $this->watermarktext['color']); $color = imagecolorallocate($dst_photo, $colorrgb[0], $colorrgb[1], $colorrgb[2]); imagettftext($dst_photo, $this->watermarktext['size'], $this->watermarktext['angle'], $x + $ax, $y + $ay, $color, $this->watermarktext['fontpath'], $this->watermarktext['text']); } else { imagealphablending($watermark_logo, true); imagecopymerge($dst_photo, $watermark_logo, $x, $y, 0, 0, $logowidth, $logoheight, $this->watermarktrans); } $targetfile = !$preview ? $this->targetfile : './watermark_tmp.jpg'; if($this->attachinfo['mime'] == 'image/jpeg') { $imagefunc($dst_photo, $targetfile, $this->watermarkquality); } else { $imagefunc($dst_photo, $targetfile); } $this->attach['size'] = filesize($this->targetfile); } } } }//End Class
希望本文所述对大家的php程序设计有所帮助。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Suggestions de développement Laravel : Comment optimiser le traitement des images et la mise en cache Introduction Dans le développement Web moderne, le traitement des images et la mise en cache sont un problème courant et important. L'optimisation des stratégies de traitement des images et de mise en cache améliore non seulement les performances du site Web et l'expérience utilisateur, mais réduit également la consommation de bande passante et la charge du serveur. Cet article explorera les méthodes et suggestions sur la façon d'optimiser le traitement des images et la mise en cache dans le développement Laravel. 1. Choisissez le format d'image approprié Le choix du format d'image approprié est la première étape de l'optimisation du traitement de l'image. Les formats d'image courants incluent JPEG, PNG

Comment utiliser Laravel pour implémenter des fonctions de traitement d'images nécessite des exemples de code spécifiques. De nos jours, avec le développement d'Internet, le traitement d'images est devenu un élément indispensable du développement de sites Web. Laravel est un framework PHP populaire qui nous fournit de nombreux outils pratiques pour traiter les images. Cet article expliquera comment utiliser Laravel pour implémenter des fonctions de traitement d'image et donnera des exemples de code spécifiques. Installer LaravelInterventionImageInterven

Comment utiliser le framework Hyperf pour le traitement d'images Introduction : Avec le développement rapide de l'Internet mobile, le traitement d'images est devenu de plus en plus important dans le développement Web moderne. Hyperf est un framework hautes performances basé sur Swoole, qui fournit une multitude de composants et de fonctions, notamment le traitement d'images. Cet article explique comment utiliser le framework Hyperf pour le traitement d'images et fournit des exemples de code spécifiques. 1. Installez le framework Hyperf : Avant de commencer, on s'assure d'abord que le framework Hyperf a été installé. Compo

Les avantages apportés par l'intégration du framework PHP et du CMS sont : 1. Améliorer l'efficacité du développement 2. Améliorer la sécurité 3. Simplifier la gestion du contenu ; Dans le cas réel, le framework Laravel a été intégré à WordPressCMS pour créer un site Web de blog avec des fonctions personnalisées. Les étapes d'intégration comprennent la création d'une application Laravel, l'installation de WordPress, la configuration de WordPress, la création d'un contrôleur, la définition du routage, l'obtention des données WordPress, et dans le processus. Vue Laravel Afficher les données.

En tant que l'un des langages de programmation les plus populaires au monde, Java dispose d'un large éventail d'applications dans le domaine du développement. Parmi elles, les fonctions de traitement d’image et de filigrane font partie des exigences courantes. Cet article révélera les techniques d'implémentation des fonctions de traitement d'image et de filigrane dans le développement Java pour aider les lecteurs à mieux relever ce défi. Afin d'implémenter les fonctions de traitement d'image et de filigrane, nous devons d'abord comprendre les concepts de base et les API du traitement d'image en Java. Java fournit une multitude de bibliothèques de traitement d'images, dont les plus couramment utilisées sont Java2DAPI et Java.

Avec le développement rapide d’Internet, les images jouent un rôle de plus en plus important dans notre vie quotidienne et dans notre travail. Avec les progrès de la technologie, les gens ont des exigences de plus en plus élevées en matière de qualité et de quantité d'images. En tant que langage de programmation très populaire, Java a progressivement attiré l'attention des gens dans le domaine du traitement d'images. Cet article partira du point de vue des développeurs Java et explorera en profondeur les techniques de traitement d'images dans le développement Java. 1. Connaissances de base en traitement d'image Pour effectuer un traitement d'image dans le développement Java, vous devez d'abord comprendre quelques connaissances de base. Image gracieuseté de

Conseils pratiques pour intégrer PHPcms avec d'autres systèmes Avec le développement continu de la technologie Internet, le domaine du développement de sites Web est devenu plus diversifié et complexe. Dans les projets réels, nous sommes souvent confrontés à des situations dans lesquelles différents systèmes doivent être intégrés, ce qui nécessite que nous ayons certaines compétences et expériences pour résoudre ces problèmes. Cet article présentera quelques conseils pratiques et exemples de code spécifiques pour l'intégration du système PHPcms avec d'autres systèmes afin d'aider les développeurs à mieux faire face aux défis. 1. Principes de base de l'intégration Lors de l'intégration d'un système, il est d'abord nécessaire de

L'emplacement du répertoire Empire CMS est révélé. Des exemples de code spécifiques sont nécessaires. Empire CMS (EmpireCMS) est un système de gestion de contenu open source largement utilisé. Sa flexibilité et sa richesse en fonctionnalités sont appréciées par les utilisateurs. Au cours du processus de développement d'un site Web, il est crucial de comprendre la structure des répertoires et l'emplacement des fichiers d'Empire CMS, car cela aide les développeurs à mieux gérer le contenu et les fonctions du site Web. Cet article révélera l'emplacement du répertoire d'Empire CMS et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre ce système de gestion de contenu. 1.Structure de répertoire de base
