Home php教程 php手册 功能强大的PHP图片处理类(水

功能强大的PHP图片处理类(水

Jun 06, 2016 pm 07:41 PM
p php image processing

这篇文章主要汇总介绍了php图片处理类(水

非常强大的php图片处理类,可以自定义图片水印、透明度、图片缩放、图片锐化、图片旋转、图片翻转、图片剪切、图片反色。

 * 图片处理函数功能:缩放、剪切、相框、水印、锐化、旋转、翻转、透明度、反色
* 处理并保存历史记录的思路:当有图片有改动时自动生成一张新图片,命名方式可以考虑在原图片的基础上加上步骤,例如:图片名称+__第几步

具体代码如下:

'没有找到相关图片!' ); /** * 构造函数:函数初始化 */ function __construct($PICTURE_URL){ $this -> get_info($PICTURE_URL); } function get_info($PICTURE_URL){ /** * 处理原图片的信息,先检测图片是否存在,不存在则给出相应的信息 */ @$SIZE = getimagesize($PICTURE_URL); if(!$SIZE){ exit($this -> ERROR['unalviable']); } // 得到原图片的信息类型、宽度、高度 $this -> PICTURE_MIME = $SIZE['mime']; $this -> PICTURE_WIDTH = $SIZE[0]; $this -> PICTURE_HEIGHT = $SIZE[1]; // 创建图片 switch($SIZE[2]){ case 1: $this -> PICTURE_CREATE = imagecreatefromgif($PICTURE_URL); $this -> PICTURE_TYPE = "imagejpeg"; $this -> PICTURE_EXT = "jpg"; break; case 2: $this -> PICTURE_CREATE = imagecreatefromjpeg($PICTURE_URL); $this -> PICTURE_TYPE = "imagegif"; $this -> PICTURE_EXT = "gif"; break; case 3: $this -> PICTURE_CREATE = imagecreatefrompng($PICTURE_URL); $this -> PICTURE_TYPE = "imagepng"; $this -> PICTURE_EXT = "png"; break; } /** * 文字颜色转换16进制转换成10进制 */ preg_match_all("/([0-f]){2,2}/i", $this -> FONT_COLOR, $MATCHES); if(count($MATCHES) == 3){ $this -> RED = hexdec($MATCHES[0][0]); $this -> GREEN = hexdec($MATCHES[0][1]); $this -> BLUE = hexdec($MATCHES[0][2]); } } # end of __construct /** * 将16进制的颜色转换成10进制的(R,G,,B) */ function hex2dec(){ preg_match_all("/([0-f]){2,2}/i", $this -> FONT_COLOR, $MATCHES); if(count($MATCHES) == 3){ $this -> RED = hexdec($MATCHES[0][0]); $this -> GREEN = hexdec($MATCHES[0][1]); $this -> BLUE = hexdec($MATCHES[0][2]); } } // 缩放类型 function zoom_type($ZOOM_TYPE){ $this -> ZOOM = $ZOOM_TYPE; } // 对图片进行缩放,如果不指定高度和宽度就进行缩放 function zoom(){ // 缩放的大小 if($this -> ZOOM == 0){ $this -> ZOOM_WIDTH = $this -> PICTURE_WIDTH * $this -> ZOOM_MULTIPLE; $this -> ZOOM_HEIGHT = $this -> PICTURE_HEIGHT * $this -> ZOOM_MULTIPLE; } // 新建一个真彩图象 $this -> TRUE_COLOR = imagecreatetruecolor($this -> ZOOM_WIDTH, $this -> ZOOM_HEIGHT); $WHITE = imagecolorallocate($this -> TRUE_COLOR, 255, 255, 255); imagefilledrectangle($this -> TRUE_COLOR, 0, 0, $this -> ZOOM_WIDTH, $this -> ZOOM_HEIGHT, $WHITE); imagecopyresized($this -> TRUE_COLOR, $this -> PICTURE_CREATE, 0, 0, 0, 0, $this -> ZOOM_WIDTH, $this -> ZOOM_HEIGHT, $this -> PICTURE_WIDTH, $this -> PICTURE_HEIGHT); } # end of zoom // 裁切图片,按坐标或自动 function cut(){ $this -> TRUE_COLOR = imagecreatetruecolor($this -> CUT_WIDTH, $this -> CUT_WIDTH); imagecopy($this -> TRUE_COLOR, $this -> PICTURE_CREATE, 0, 0, $this -> CUT_X, $this -> CUT_Y, $this -> CUT_WIDTH, $this -> CUT_HEIGHT); } # end of cut /** * 在图片上放文字或图片 * 水印文字 */ function _mark_text(){ $this -> TRUE_COLOR = imagecreatetruecolor($this -> PICTURE_WIDTH, $this -> PICTURE_HEIGHT); $this -> WORD = mb_convert_encoding($this -> FONT_WORD, 'utf-8', 'gb2312'); /** * 取得使用 TrueType 字体的文本的范围 */ $TEMP = imagettfbbox($this -> FONT_SIZE, 0, $this -> FONT_PATH, $this -> WORD); $WORD_LENGTH = strlen($this -> WORD); $WORD_WIDTH = $TEMP[2] - $TEMP[6]; $WORD_HEIGHT = $TEMP[3] - $TEMP[7]; /** * 文字水印的默认位置为右下角 */ if($this -> WORD_X == ""){ $this -> WORD_X = $this -> PICTURE_WIDTH - $WORD_WIDTH; } if($this -> WORD_Y == ""){ $this -> WORD_Y = $this -> PICTURE_HEIGHT - $WORD_HEIGHT; } imagesettile($this -> TRUE_COLOR, $this -> PICTURE_CREATE); imagefilledrectangle($this -> TRUE_COLOR, 0, 0, $this -> PICTURE_WIDTH, $this -> PICTURE_HEIGHT, IMG_COLOR_TILED); $TEXT2 = imagecolorallocate($this -> TRUE_COLOR, $this -> RED, $this -> GREEN, $this -> Blue); imagettftext($this -> TRUE_COLOR, $this -> FONT_SIZE, $this -> ANGLE, $this -> WORD_X, $this -> WORD_Y, $TEXT2, $this -> FONT_PATH, $this -> WORD); } /** * 水印图片 */ function _mark_picture(){ /** * 获取水印图片的信息 */ @$SIZE = getimagesize($this -> FORCE_URL); if(!$SIZE){ exit($this -> ERROR['unalviable']); } $FORCE_PICTURE_WIDTH = $SIZE[0]; $FORCE_PICTURE_HEIGHT = $SIZE[1]; // 创建水印图片 switch($SIZE[2]){ case 1: $FORCE_PICTURE_CREATE = imagecreatefromgif($this -> FORCE_URL); $FORCE_PICTURE_TYPE = "gif"; break; case 2: $FORCE_PICTURE_CREATE = imagecreatefromjpeg($this -> FORCE_URL); $FORCE_PICTURE_TYPE = "jpg"; break; case 3: $FORCE_PICTURE_CREATE = imagecreatefrompng($this -> FORCE_URL); $FORCE_PICTURE_TYPE = "png"; break; } /** * 判断水印图片的大小,并生成目标图片的大小,如果水印比图片大,则生成图片大小为水印图片的大小。否则生成的图片大小为原图片大小。 */ $this -> NEW_PICTURE = $this -> PICTURE_CREATE; if($FORCE_PICTURE_WIDTH > $this -> PICTURE_WIDTH){ $CREATE_WIDTH = $FORCE_PICTURE_WIDTH - $this -> FORCE_START_X; }else{ $CREATE_WIDTH = $this -> PICTURE_WIDTH; } if($FORCE_PICTURE_HEIGHT > $this -> PICTURE_HEIGHT){ $CREATE_HEIGHT = $FORCE_PICTURE_HEIGHT - $this -> FORCE_START_Y; }else{ $CREATE_HEIGHT = $this -> PICTURE_HEIGHT; } /** * 创建一个画布 */ $NEW_PICTURE_CREATE = imagecreatetruecolor($CREATE_WIDTH, $CREATE_HEIGHT); $WHITE = imagecolorallocate($NEW_PICTURE_CREATE, 255, 255, 255); /** * 将背景图拷贝到画布中 */ imagecopy($NEW_PICTURE_CREATE, $this -> PICTURE_CREATE, 0, 0, 0, 0, $this -> PICTURE_WIDTH, $this -> PICTURE_HEIGHT); /** * 将目标图片拷贝到背景图片上 */ imagecopy($NEW_PICTURE_CREATE, $FORCE_PICTURE_CREATE, $this -> FORCE_X, $this -> FORCE_Y, $this -> FORCE_START_X, $this -> FORCE_START_Y, $FORCE_PICTURE_WIDTH, $FORCE_PICTURE_HEIGHT); $this -> TRUE_COLOR = $NEW_PICTURE_CREATE; } # end of mark function alpha_(){ $this -> TRUE_COLOR = imagecreatetruecolor($this -> PICTURE_WIDTH, $this -> PICTURE_HEIGHT); $rgb = "#CDCDCD"; $tran_color = "#000000"; for($j = 0;$j PICTURE_HEIGHT-1;$j++){ for ($i = 0;$i PICTURE_WIDTH-1;$i++) { $rgb = imagecolorat($this -> PICTURE_CREATE, $i, $j); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $now_color = imagecolorallocate($this -> PICTURE_CREATE, $r, $g, $b); if ($now_color == $tran_color) { continue; } else { $color = imagecolorallocatealpha($this -> PICTURE_CREATE, $r, $g, $b, $ALPHA); imagesetpixel($this -> PICTURE_CREATE, $ALPHA_X + $i, $ALPHA_Y + $j, $color); } $this -> TRUE_COLOR = $this -> PICTURE_CREATE; } } } /** * 图片旋转: * 沿y轴旋转 */ function turn_y(){ $this -> TRUE_COLOR = imagecreatetruecolor($this -> PICTURE_WIDTH, $this -> PICTURE_HEIGHT); for ($x = 0; $x PICTURE_WIDTH; $x++) { imagecopy($this -> TRUE_COLOR, $this -> PICTURE_CREATE, $this -> PICTURE_WIDTH - $x - 1, 0, $x, 0, 1, $this -> PICTURE_HEIGHT); } } /** * 沿X轴旋转 */ function turn_x(){ $this -> TRUE_COLOR = imagecreatetruecolor($this -> PICTURE_WIDTH, $this -> PICTURE_HEIGHT); for ($y = 0; $y PICTURE_HEIGHT; $y++){ imagecopy($this -> TRUE_COLOR, $this -> PICTURE_CREATE, 0, $this -> PICTURE_HEIGHT - $y - 1, 0, $y, $this -> PICTURE_WIDTH, 1); } } /** * 任意角度旋转 */ function turn(){ $this -> TRUE_COLOR = imagecreatetruecolor($this -> PICTURE_WIDTH, $this -> PICTURE_HEIGHT); imageCopyResized($this -> TRUE_COLOR, $this -> PICTURE_CREATE, 0, 0, 0, 0, $this -> PICTURE_WIDTH, $this -> PICTURE_HEIGHT, $this -> PICTURE_WIDTH, $this -> PICTURE_HEIGHT); $WHITE = imagecolorallocate($this -> TRUE_COLOR, 255, 255, 255); $this -> TRUE_COLOR = imagerotate ($this -> TRUE_COLOR, $this -> CIRCUMROTATE, $WHITE); } /** * 图片锐化 */ function sharp(){ $this -> TRUE_COLOR = imagecreatetruecolor($this -> PICTURE_WIDTH, $this -> PICTURE_HEIGHT); $cnt = 0; for ($x = 0; $x PICTURE_WIDTH; $x++){ for ($y = 0; $y PICTURE_HEIGHT; $y++){ $src_clr1 = imagecolorsforindex($this -> TRUE_COLOR, imagecolorat($this -> PICTURE_CREATE, $x-1, $y-1)); $src_clr2 = imagecolorsforindex($this -> TRUE_COLOR, imagecolorat($this -> PICTURE_CREATE, $x, $y)); $r = intval($src_clr2["red"] + $this -> SHARP * ($src_clr2["red"] - $src_clr1["red"])); $g = intval($src_clr2["green"] + $this -> SHARP * ($src_clr2["green"] - $src_clr1["green"])); $b = intval($src_clr2["blue"] + $this -> SHARP * ($src_clr2["blue"] - $src_clr1["blue"])); $r = min(255, max($r, 0)); $g = min(255, max($g, 0)); $b = min(255, max($b, 0)); if (($DST_CLR = imagecolorexact($this -> PICTURE_CREATE, $r, $g, $b)) == -1) $DST_CLR = imagecolorallocate($this -> PICTURE_CREATE, $r, $g, $b); $cnt++; if ($DST_CLR == -1) die("color allocate faile at $x, $y ($cnt)."); imagesetpixel($this -> TRUE_COLOR, $x, $y, $DST_CLR); } } } /** * 将图片反色处理?? */ function return_color(){ /** * 创建一个画布 */ $NEW_PICTURE_CREATE = imagecreate($this -> PICTURE_WIDTH, $this -> PICTURE_HEIGHT); $WHITE = imagecolorallocate($NEW_PICTURE_CREATE, 255, 255, 255); /** * 将背景图拷贝到画布中 */ imagecopy($NEW_PICTURE_CREATE, $this -> PICTURE_CREATE, 0, 0, 0, 0, $this -> PICTURE_WIDTH, $this -> PICTURE_HEIGHT); $this -> TRUE_COLOR = $NEW_PICTURE_CREATE; } /** * 生成目标图片并显示 */ function show(){ // 判断浏览器,若是IE就不发送头 if(isset($_SERVER['HTTP_USER_AGENT'])) { $ua = strtoupper($_SERVER['HTTP_USER_AGENT']); if(!preg_match('/^.*MSIE.*\)$/i', $ua)) { header("Content-type:$this->PICTURE_MIME"); } } $OUT = $this -> PICTURE_TYPE; $OUT($this -> TRUE_COLOR); } /** * 生成目标图片并保存 */ function save_picture(){ // 以 JPEG 格式将图像输出到浏览器或文件 $OUT = $this -> PICTURE_TYPE; if(function_exists($OUT)){ // 判断浏览器,若是IE就不发送头 if(isset($_SERVER['HTTP_USER_AGENT'])) { $ua = strtoupper($_SERVER['HTTP_USER_AGENT']); if(!preg_match('/^.*MSIE.*\)$/i', $ua)) { header("Content-type:$this->PICTURE_MIME"); } } if(!$this -> TRUE_COLOR){ exit($this -> ERROR['unavilable']); }else{ $OUT($this -> TRUE_COLOR, $this -> DEST_URL); $OUT($this -> TRUE_COLOR); } } } /** * 析构函数:释放图片 */ function __destruct(){ /** * 释放图片 */ imagedestroy($this -> TRUE_COLOR); imagedestroy($this -> PICTURE_CREATE); } # end of class } ?>

这就是非常强大的php图片处理类,好好收藏,亲,相信以后一定会派上用场的。

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Repo: How To Revive Teammates
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to implement image compression using PHP How to implement image compression using PHP Sep 13, 2023 am 08:42 AM

Method of using PHP to achieve image compression 1. Background introduction In website or mobile application development, we often encounter situations where images need to be compressed. Image compression can effectively reduce the file size of images, improve page loading speed, and save storage space. This article will introduce how to implement image compression using PHP language and give specific code examples. 2. Method introduction PHP provides a variety of extension libraries for processing images, such as GD, ImageMagick, etc. Among them, the GD extension is built-in in PHP to process images.

How to adjust the brightness and contrast of an image using PHP How to adjust the brightness and contrast of an image using PHP Aug 26, 2023 pm 07:04 PM

How to use PHP to adjust the brightness and contrast of pictures Brightness and contrast are one of the important factors in adjusting the visual effects of pictures. In image processing, you can make a picture brighter or darker by adjusting brightness, and you can enhance or weaken the differences between different colors in a picture by adjusting contrast. As a commonly used server-side scripting language, PHP provides a wealth of image processing functions and libraries. This article will introduce how to use PHP to adjust the brightness and contrast of images, with code examples. Adjust the brightness of the picture You can adjust the brightness of the picture by changing

PHP Image Processing Quick Start Guide: Basic Operations and FAQs PHP Image Processing Quick Start Guide: Basic Operations and FAQs Aug 21, 2023 am 10:12 AM

PHP Image Processing Quick Start Guide: Basic Operations and FAQs Introduction: In web development, image processing is a very common and important task. Whether it is used for image uploading, cropping, watermarking and other operations in website development, or used for image compression and processing in mobile applications, some operations need to be performed on images. As a popular server-side scripting language, PHP has powerful image processing capabilities. This article will help you quickly get started with PHP image processing, including basic operations and answers to frequently asked questions. 1. Basic exercises

Is Huawei P60 a 5G phone? Is Huawei P60 a 5G phone? Feb 21, 2024 am 08:30 AM

With the development of 5G technology, people are paying more and more attention to 5G mobile phones. As one of China's most well-known communication equipment manufacturers, Huawei has been leading the research, development and application of 5G technology. In 2019, Huawei launched a number of 5G mobile phones, including the Huawei P60 series. So, is Huawei P60 a 5G mobile phone? Let us discuss it now. First of all, we need to make it clear that Huawei P60 series mobile phones are not 5G mobile phones. Huawei P60 series released in 2019, they

How does PHP handle image uploading and processing? How does PHP handle image uploading and processing? Jul 02, 2023 pm 03:07 PM

PHP (Hypertext Preprocessor) is a scripting language widely used for server-side development and is widely used for website development. In website development, handling image uploads is a common requirement. This article will introduce how PHP handles image uploading and processing. First of all, image uploading needs to be implemented using HTML form elements. In HTML, you can use <inputtype="file"> to create a file upload control

How to use PHP image processing library? How to use PHP image processing library? Jun 02, 2023 pm 05:21 PM

The PHP image processing class library is one of the commonly used tools for PHP developers. It can help us edit, crop, zoom and other operations on images quickly and easily. This article will introduce how to use the PHP image processing class library. 1. What is the PHP image processing library? The PHP image processing class library is a set of toolkits developed to facilitate PHP developers to quickly process images. It can handle image formats such as JPG, PNG, GIF and BMP, and realize image scaling, rotation, cropping, etc.

PHP image processing skills revealed PHP image processing skills revealed Sep 13, 2023 am 09:30 AM

PHP image processing skills revealed In modern Internet applications, image processing is one of the most common requirements. Whether it is compressing, cropping, adding watermarks to images, generating thumbnails, etc., you need to use image processing skills. As an excellent server-side programming language, PHP provides rich image processing functions and extension libraries, which provides good support for us to achieve these needs. This article will reveal some PHP image processing techniques and provide specific code examples. Image Compression Image compression is a great way to optimize website loading speed and

Upcoming Apple Watch SE will likely feature a plastic case, reiterates prominent tipster Upcoming Apple Watch SE will likely feature a plastic case, reiterates prominent tipster Aug 07, 2024 am 09:39 AM

Last month, seasoned analyst Mark Gurman revealed that the next-generation Apple Watch SE, which may launch as early as this year, might feature a 'rigid plastic' case, foregoing the aluminum case that has adorned the Apple Watch since its inception

See all articles