首页 后端开发 php教程 图片处理类 (改进版)

图片处理类 (改进版)

Aug 08, 2016 am 09:28 AM
height image info self

<?php #封装一个image类
class Image{
	private static $info;    #图片基本信息
	private static $image;   #内存中的图片

	public function __construct($src){
		#判断文件
		if(!is_file($src)){
			return false;
		} #如果不是文件,直接返回
		//获取图片信息
		$info = getimagesize($src);

		self::$info=array(
			&#39;width&#39;=>$info[0],
			'height'=>$info[1],
			'type'=>image_type_to_extension($info[2],false),
			'mime'=>$info['mime']
			);

		//获取图片信息
		$type=self::$info['type'];
		$fun ="imagecreatefrom{$type}";
		self::$image = $fun($src);
	}

	/**
	 * @param  int   $width  $height  应该在配置文件中声明使用,可取消参数
	 * @return 						  缩略图 图片资源
	 * 缩略图的形成与使用
	 */
	public function thumb($width ,$height){
		//新建镇色彩图片
		$image_thumb =imagecreatetruecolor($width ,$height);

		#获取图片的宽高比
		$src_m = self::$info['width'] / self::$info['height'];   #源文件空格比
		$dst_m = $width / $height;								 #缩略图宽高比

		#源文件图片是 N:1 型的  宽不变, 改变高
		if($src_m > $dst_m ){
			$cha_width = $width;
			$cha_height = ceil($width / $src_m) ; 
		}else{

		#源文件图片是 1:N 型的   高不变,改变宽
			$cha_width = floor($height * $src_m) ;
			$cha_height = $height ;
		}

		#对缩略图的其实位置进行重置
		$dst_x = ($width - $cha_width) /2 ;
		$dst_y = ($height - $cha_height) /2 ;

		imagecopyresampled($image_thumb ,self::$image , $dst_x , $dst_y ,0 , 0, $cha_width , $cha_height ,self::$info['width'],self::$info['height']);
	
		#生成缩略图
		self::$image =$image_thumb;
		// #显示缩略图图片
		// self::show(self::$image);

		#保存缩略图
		self::save(self::getNewName());

		//销毁图片
		imagedestroy($this->image_thumb);
		#返回缩略图名字
		return self::getNewName();
	}

	#水印的生成坐标
	private static function setLocal($pos){
		#对 pos 参数进行判断 , 指定相应的水印生成坐标
		#水印图片在config 文件中记录 $conf['mark']
		switch ($pos) {
			case 1:
				$x = 0;
				$y = 0;
			break ;

			case 2:
			default:
				$x = self::$info['width']-50;
				$y = self::$info['height']-50;   #不该是20 这个定制, 应该改成水印图片的宽高

		}
		return $local=array('x' => $x ,'y'=>$y);

	}

	#添加文字水印
	public function fontMark($content ,$font_url ,$size,$angle){
		#字体颜色
		$col = imagecolorallocatealpha(self::$image,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255),20);
		#获取水印输出位置坐标
		$local = self::setLocal(2);

		imagettftext(self::$image,$size,$angle,$local['x'],$local['y'],$col,$font_url,$content);
		#显示缩略图图片
		self::show(self::$image);
		#保存文字水印 没有添加保存路径
		self::save(self::getNewName());
		#返回水印图片的名字
		return self::getNewName();
 
	}

	#添加图片水印
	public function imageMark($url  ,$alpha){
		$info= getimagesize($url);  #获取图片信息
		$type=image_type_to_extension($info[2],false);
		$fun = "imagecreatefrom{$type}";
		
		#获取水印输出位置坐标
		$local = self::setLocal(2);

		$water = $fun($url);        #水印图片
		imagecopymerge(self::$image, $water, $local['x'], $local['y'],0 , 0,$info[0] , $info[1], 30);

		#销毁图片水印
		imagedestroy($water);

		#显示缩略图图片
		self::show(self::$image);

		#保存图片水印 没有添加保存路径
		self::save(self::getNewName());
		#返回水印图片的名字
		return self::getNewName();

	}

	#生成随机的 图片名字
	/**
	 * @return      string     				返回一个新的名字
	 * 
	 */
	private static function getNewName(){
		#获取一个时间
		$str = time();
		#获取随机字符串
		$string = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOASDFGHJKZXCVBNM1234567890";

		for($i=0 ; $i<br>
                
                
                <p>
                    以上就介绍了图片处理类 (改进版),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。</p>
                <p>
                    </p>
             
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

为什么NameResolutionError(self.host, self, e) from e,怎么解决 为什么NameResolutionError(self.host, self, e) from e,怎么解决 Mar 01, 2024 pm 01:20 PM

报错的原因NameResolutionError(self.host,self,e)frome是由urllib3库中的异常类型,这个错误的原因是DNS解析失败,也就是说,试图解析的主机名或IP地址无法找到。这可能是由于输入的URL地址不正确,或者DNS服务器暂时不可用导致的。如何解决解决此错误的方法可能有以下几种:检查输入的URL地址是否正确,确保它是可访问的确保DNS服务器可用,您可以尝试在命令行中使用"ping"命令来测试DNS服务器是否可用尝试使用IP地址而不是主机名来访问网站如果是在代理

如何免费使用Bing Image Creator 如何免费使用Bing Image Creator Feb 27, 2024 am 11:04 AM

本文将介绍七种利用免费的BingImageCreator获得高质量输出的方法。BingImageCreator(现称为MicrosoftDesigner的ImageCreator)是一个出色的在线人工智能艺术生成器之一。它能根据用户的提示生成高度逼真的视觉效果。提示越具体、清晰和创意,生成的效果也会更出色。BingImageCreator在创建高质量图像方面取得了重大进展。它现在使用Dall-E3培训模式,显示出更高水平的细节和现实主义。然而,它能否始终如一地生成高清结果取决于几个因素,包括快速

小米手机image怎么删除 小米手机image怎么删除 Mar 02, 2024 pm 05:34 PM

小米手机image怎么删除?在小米手机中是可以删除image,但是多数的用户不知道image如何的删除,接下来就是小编为用户带来的小米手机image删除方法教程,感兴趣的用户快来一起看看吧!小米手机image怎么删除1、首先打开小米手机中的【相册】功能;2、然后勾选不需要的图片,点击右下角的【删除】按钮;3、之后点击最顶部的【相册】进入到专区,选择【回收站】;4、接着直接点击下图所示的【清空回收站】;5、最后直接点击【永久删除】即可完成。

Python中的self怎么使用 Python中的self怎么使用 May 17, 2023 pm 10:40 PM

在介绍Python的self用法之前,先来介绍下Python中的类和实例我们知道,面向对象最重要的概念就是类(class)和实例(instance),类是抽象的模板,比如学生这个抽象的事物,可以用一个Student类来表示。而实例是根据类创建出来的一个个具体的“对象”,每一个对象都从类中继承有相同的方法,但各自的数据可能不同。1、以Student类为例,在Python中,定义类如下:classStudent(object):pass(Object)表示该类从哪个类继承下来的,Object类是所有

Imagemagic安装Centos及Image安装教程 Imagemagic安装Centos及Image安装教程 Feb 12, 2024 pm 05:27 PM

LINUX是一种开源的操作系统,它的灵活性和可定制性使得它成为了许多开发者和系统管理员的首选,在LINUX系统中,图像处理是一个非常重要的任务,而Imagemagick和Image是两个非常流行的图像处理工具,本文将为您介绍如何在Centos系统中安装Imagemagick和Image,并提供详细的安装教程。Imagemagic安装Centos教程Imagemagick是一个功能强大的图像处理工具集,它可以在命令行下执行各种图像操作,以下是在Centos系统上安装Imagemagick的步骤:1

CSS 维度属性详解:height 和 width CSS 维度属性详解:height 和 width Oct 21, 2023 pm 12:42 PM

CSS维度属性详解:height和width在前端开发中,CSS是一种强大的样式定义语言。其中,height和width是两个最基本的维度属性,用于定义元素的高度和宽度。本文将对这两个属性进行详细解析,并提供具体的代码示例。一、height属性height属性用于定义元素的高度。可以使用像素(pixel)、百分比(percentage)或者

在PHP中的imagefilledrectangle()函数 在PHP中的imagefilledrectangle()函数 Aug 30, 2023 am 09:05 AM

imagefilledrectangle()函数绘制一个填充矩形。语法imagefilledrectangle($img,$x1,$y1,$x2,$y2,$color)参数image 使用imagecreatetruecolor()创建一个空白图像。x1点1的x坐标。y1 点1的y坐标。x2 点2的x坐标。y2 点2的y坐标。color 填充颜色。返回值imagefilledrectangle()函数成功返

理解Python中self关键字 理解Python中self关键字 Feb 20, 2024 am 11:27 AM

Python中的self的理解及示例在Python中,self是一个特殊的参数,它用于表示类的实例对象本身。通过self,我们可以在类的方法中访问类的成员变量和方法。在此文章中,我将解释self的作用,以及如何正确使用self来访问类的成员。首先,让我们来理解self的概念。在Python中,定义类的时候,第一个参数通常为self。这个self参数指向类的实

See all articles