PHP从零单排(十八)图片处理
1.打开已经存在的图片
<?phpheader ("Content-type:image/jpeg"); $img=imagecreatefromjpeg("cc.jpg");imagejpeg($img);imagedestroy($img);?>函数imagecreatefromjpeg()的参数即文件所在路径,返回值是参数所指图片的资源标识符。该函数时通过已有图像新建一个图像,并不是单纯打开原图像本身。如果将图片的后缀名.jpg强制改为.png,即便是使用函数imagecreatefrompng(),也无法打开文件,因为图片本质还是jpg格式的图片。
2.获取图片的相关属性
<?php $img=imagecreatefromjpeg("cc.jpg");$x=imagesx($img);$y=imagesy($img);echo "图片cc.jpg的宽为:<b>$x pixels";echo "<br>";echo "<br>";echo "图片cc.jpg的高为:<b>$y</b> pixels";?>
另外,通过一个不属于GD库的函数getimagesize(),可以取得图片的大小等相关属性,该函数的语法如下:
array getimagesize(string $filename [, array &imageinfo])
<?php $img_info=getimagesize("cc.jpg");for($i=0;$i<4;++$i){ echo $img_info[$i]; echo "<br/>"; }?>第三个元素是图片的格式,它的取值含义如下所示:
1:表示该图片是GIF格式
2:表示该图片是JPG格式
3:表示该图片是PNG格式
4:表示该图片是SWF格式
5:表示该图片是PSD格式
6:表示该图片是BMP格式
<?php $pic_name="ee.png";$pic_size=getimagesize($pic_name);?><img src="<?php%20echo%20%24pic_name;%20?>" echo alt="PHP从0单排(十八)图片处理" >>
3.对图片加水印效果
·获取要添加水印的图片的宽、高值
·确定图片大小是否满足水印文字大小
·确定水印效果在图片中的位置
·设定图像的混色模式
·生成水印效果
·释放资源
<?php function makeimagewatermark($image,$pos,$water_text,$font_size,$color){ $font_type="c://WINDOWS//Fonts//SIMYOU.TTF"; if(!empty($image)&& file_exists($image)) { $img_info=getimagesize($image); $g_w=$img_info[0]; $g_h=$img_info[1]; switch($img_info[2]) { case 1: $img=imagecreatefromgif($image); break; case 2: $img=imagecreatefromjpeg($image); break; case 3: $img=imagecreatefrompng($image); break; default: die("Format Wrong"); } } else { die("Not exists!"); } $temp=imagettfbbox(ceil($font_size*2.5),0,$font_type,$water_text); $w=$temp[2]-$temp[6]; $h=$temp[3]-$temp[7]; if(($g_w<$w) || ($g_h<$h)) { echo "Too small!"; return; } switch($pos){ case 0: $pos_x=rand(0,($g_w-$w)); $pos_y=rand(0,($g_h-$h)); break; case 1: $pos_x=0; $pos_y=0; break; case 2: $pos_x=($g_w-$w)/2; $pos_y=($g_h-$h)/2; break; case 3: $pos_x=$g_w-$w; $pos_y=$g_h-$h; break; default: $pos_x=rand(0,($g_w-$w)); $pos_y=rand(0,($g_h-$h)); break; } imagealphablending($img,true);//设置图像混色模式 if(!empty($color) && (strlen($color)==7)){ $R=hexdec(substr($color,1,2)); $G=hexdec(substr($color,3,2)); $B=hexdec(substr($color,5)); } else { die("Format wrong!"); } $text_color=imagecolorallocate($img,$R,$G,$B); imagettftext($img,$font_size,0,$pos_x,$pos_y,$text_color,$font_type,$water_text); switch($img_info[2]) { case 1 : imagegif($img,$image); break; case 2 : imagejpeg($img,$image); break; case 3: imagepng($img,$image); break; default: die("Formate unSupport!"); } imagedestroy($img); }if(isset($_FILES) && !empty($_FILES['userfile'])&& $_FILES['userfile']['size']>0){$uploadfile="./".time()."_".$_FILES['userfile']['name'];if(copy($_FILES['userfile']['tmp_name'],$uploadfile)){ makeimagewatermark($uploadfile,2,"Photo by Mac",16,"#43042A"); echo "<img src="%5C%22%22.%24uploadfile.%22%5C%22" border='\"0\"' alt="PHP从0单排(十八)图片处理" >"; }else{ echo "uploadWrong!<br>"; }}?><title>19.9.php</title>
4.生成已有图片的缩略图
<?php header("Content-type:image/jpeg");$img_name="cc.jpg";$src_img=imagecreatefromjpeg($img_name);$ow=imagesx($src_img);$oh=imagesy($src_img);$nw=round($ow*200.0/$ow);$nh=round($oh*200.0/$oh);$desc_img=imagecreate($nw,$nh);imagecopyresized($desc_img,$src_img,0,0,0,0,$nw,$nh,$ow,$oh);imagejpeg($desc_img);imagedestroy($desc_img);imagedestroy($src_img);?>第一个和第二个参数分别是目标图像、原图像的标识符,接下来4个参数是目的图像和原图像的复制位置的坐标,最后4个参数是目的图像和原图像的复制区域的宽高。
!!使用函数imagecopyresampled()函数
<?php header("Content-type:image/jpeg");$img_name="cc.jpg";$percent=0.2;$src_img=imagecreatefromjpeg($img_name);$ow=imagesx($src_img);$oh=imagesy($src_img);$nw=$ow*$percent;$nh=$oh*$percent;$desc_img=imagecreatetruecolor($nw,$nh);imagecopyresampled($desc_img,$src_img,0,0,0,0,$nw,$nh,$ow,$oh);imagejpeg($desc_img);imagedestroy($desc_img);imagedestroy($src_img);?>

使用数据库存储会话的主要优势包括持久性、可扩展性和安全性。1.持久性:即使服务器重启,会话数据也能保持不变。2.可扩展性:适用于分布式系统,确保会话数据在多服务器间同步。3.安全性:数据库提供加密存储,保护敏感信息。

在PHP中实现自定义会话处理可以通过实现SessionHandlerInterface接口来完成。具体步骤包括:1)创建实现SessionHandlerInterface的类,如CustomSessionHandler;2)重写接口中的方法(如open,close,read,write,destroy,gc)来定义会话数据的生命周期和存储方式;3)在PHP脚本中注册自定义会话处理器并启动会话。这样可以将数据存储在MySQL、Redis等介质中,提升性能、安全性和可扩展性。

SessionID是网络应用程序中用来跟踪用户会话状态的机制。1.它是一个随机生成的字符串,用于在用户与服务器之间的多次交互中保持用户的身份信息。2.服务器生成并通过cookie或URL参数发送给客户端,帮助在用户的多次请求中识别和关联这些请求。3.生成通常使用随机算法保证唯一性和不可预测性。4.在实际开发中,可以使用内存数据库如Redis来存储session数据,提升性能和安全性。

在无状态环境如API中管理会话可以通过使用JWT或cookies来实现。1.JWT适合无状态和可扩展性,但大数据时体积大。2.Cookies更传统且易实现,但需谨慎配置以确保安全性。

要保护应用免受与会话相关的XSS攻击,需采取以下措施:1.设置HttpOnly和Secure标志保护会话cookie。2.对所有用户输入进行输出编码。3.实施内容安全策略(CSP)限制脚本来源。通过这些策略,可以有效防护会话相关的XSS攻击,确保用户数据安全。

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显着提升应用在高并发环境下的效率。

thesession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceIsiseededeedeedeedeedeedeedto to to avoidperformance andununununununexpectedLogOgouts.3)

在PHP中,可以使用session_name()函数配置会话名称。具体步骤如下:1.使用session_name()函数设置会话名称,例如session_name("my_session")。2.在设置会话名称后,调用session_start()启动会话。配置会话名称可以避免多应用间的会话数据冲突,并增强安全性,但需注意会话名称的唯一性、安全性、长度和设置时机。


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

禅工作室 13.0.1
功能强大的PHP集成开发环境