php图片处理类(生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转 )
使用演示:
代码如下 | 复制代码 |
//加载类库文件 //实例化类库,传入你要处理的图片的地址可以是网络地址,也可以是本地地址 //把图片等比缩小到最大宽度 100px或者最高100px,当只输入一个参数的时候,是限制最宽的尺寸。 //把图片等比缩小到原来的百分数,比如50就是原来的50%。 //截取一个175px * 175px的图片,注意这个是截取,超出的部分直接裁切掉,不是强制改变尺寸。 //从图片的中心计算,截取200px * 100px的图片。 //截图,前两个参数分别是需要解出的图片的右上角的坐标X,Y。 后面两个参数是需要解出的图片宽,高。 //把图片顺时针反转180度 //保存(生成)图片,你可以保存其他格式,详细参考文档 |
这个类库还有更多功能就不多做介绍了,如果你也在开发PHP网站过程中需要处理图片不妨阅读一下这个类库的文档,保证你处理图片很简单,再也不用和那十几个烦人的php图片处理函数打交道了!
另外一个强大的PHP图片缩略图类:phpThumb
该类除了缩放图片外,还能将图片转换成不同的格式输出(比如将GIF格式的图片输出为PNG格式),其特色功能还包括色彩、特效等
官方网址:http://phpthumb.sourceforge.net/
We’ll be using phpThumb , the open source PHP script to generate thumbnails on the fly.
Download and extract phpThumb to somewhere in your website folder. Now to use a rounded corner thumbnail of an image, simply use the img tag of HTML with src as
代码如下 | 复制代码 |
<img src=”phpThumb.php?src=test.jpg&w=200&h=150&fltr[]=ric|20|20&f=png” /> Adjust the path to phpThumb according to where you place the phpThumb files. <html> <head> </head> <body> <img src="phpThumb/phpThumb.php?src=../images/test.jpg&w=400&fltr[]=fram|3|2|CC9966|333333|CCCCCC" alt=""> </body> </html> |
一般只需要下面的文件就可以了
其实phpThumb的功能比我原先想象的要强大一些,下面把他的其他一些有用的参数列一下:
src:目标图片的地址
w:输出图片的宽度
h:输出图片的高度(如果不指定他将按w参数等比缩放)
q:输出如果是JPG格式的,可以规定它的输出质量
bg:输出时的背景(如果需要)
sw、sh、sx、sy:局部输出,宽高、起始位置
f:输出格式,可以为jpeg、png、gif、ico
sfn:输出gif动画中的某一帧
fltr[]:滤镜,可以有很多效果,包括锐化、模糊、旋翻转、水印、边框、遮照、色彩调整等
由于 isset 属于 php 中的语言结构,而 array_key_exists 是函数,所以 isset 更快。并且 isset 在其他语言中也存在,更具可读性。
顿时很是疑惑——什么,isset竟然不是函数?而至于处理效率isset更快,倒变得不重要了(至少我一直使用isset,几乎没有关注过array_key_exists,具体可以见文章)
PHP.net中,也被分在Variable handling 函数,但是其实在中间有这样一段话:
Note: 因为是一个语言构造器而不是一个函数,不能被 可变函数 调用。
PHP里有echo、print、die、require等几个特殊的关键字,虽然它们用起来像是函数,但实际上更类似于if、while这样控制语句,而不是一个函数。也就是说,当解释器遇到:
print 'Hello world';
这样的一个表达式的时候,并不会把它转换成函数调用,而是直接映射到一系列预先定义好的操作。使用语言构成的时候可以加括号,也可以不加括号,但是使用函数的时候必须加括号。
可变函数可见:http://www.php.net/manual/zh/functions.variable-functions.php
$func = 'foo';
$func(); // This calls foo()
$func = 'bar';
$func('test'); // This calls bar()
$func = 'echoit';
$func('test'); // This calls echoit()
而如果
$func = 'print';
// 这样做会产生异常,因为print不是一个函数,而是语言的构成部分
$func('hello world');
这么写的话就会导致报错了。
在PHP源码里,关于isset是这么写的:
很明显不是函数的写法。
又长见识了。
服务端
代码如下 | 复制代码 |
<?php |
客户端
代码如下 | 复制代码 |
<?php |
代码如下 | 复制代码 |
<?php //以程序登陆一个论坛登录为例 function bbslogin($user_login, $password, $host, $port = "80") { //需要提交的post数据 $argv = array('cookie' => array('user_login' => $user_login, 'password' => $password, '_wp_http_referer' => '/bbpress/', 're' => '', 'remember' => true)); foreach ($argv['cookie'] as $key => $value) { $params[] = $key . '=' . $value; } $params = implode('&', $params); $header = "POST /bbpress/bb-login.php HTTP/1.1rn"; $header .= "Host:$host:$portrn"; $header .= "Content-Type: application/x-www-form-urlencodedrn"; $header .= "Content-Length: " . strlen($params) . "rn"; $header .= "Connection: Closernrn"; $header .= $params; $fp = fsockopen($host, $port); fputs($fp, $header); while (!feof($fp)) { $str = fgets($fp); //以下是自己的逻辑代码,这里主要是模拟cookie,可用来同步登陆 if (!(strpos($str, "Set-Cookie:") === false)) { $tmparray = explode(" ", $str); $cookiearray = explode("=", $tmparray[1]); $cookiepaths = explode("=", $tmparray[6]); $cookiename = urldecode($cookiearray[0]); $cookievalue = urldecode(substr($cookiearray[1], 0, strlen($cookiearray[1]) - 1)); $cookietime = time() + 3600 * 24 * 7; $cookiepath = urldecode(substr($cookiepaths[1], 0, strlen($cookiepaths[1]) - 1)); setcookie($cookiename, $cookievalue, $cookietime, $cookiepath); } } fclose($fp); } ?> <?php // PHP POST数据的三种方法 // php有三种方法可以post数据,分别为Curl、socket、file_get_contents: /** * Socket版本 * 使用方法: * $post_string = "app=socket&version=beta"; * request_by_socket('facebook.cn','/restServer.php',$post_string); */ function request_by_socket($remote_server, $remote_path, $post_string, $port = 80, $timeout = 30) { $socket = fsockopen($remote_server, $port, $errno, $errstr, $timeout); if (!$socket) die("$errstr($errno)"); fwrite($socket, "POST $remote_path HTTP/1.0rn"); fwrite($socket, "User-Agent: Socket Examplern"); fwrite($socket, "HOST: $remote_serverrn"); fwrite($socket, "Content-type: application/x-www-form-urlencodedrn"); fwrite($socket, "Content-length: " . (strlen($post_string) + 8) . 'rn'); fwrite($socket, "Accept:*/*rn"); fwrite($socket, "rn"); fwrite($socket, "mypost=$post_stringrn"); fwrite($socket, "rn"); $header = ""; while ($str = trim(fgets($socket, 4096))) { $header .= $str; } $data = ""; while (!feof($socket)) { $data .= fgets($socket, 4096); } return $data; } /** * Curl版本 * 使用方法: * $post_string = "app=request&version=beta"; * request_by_curl('http://facebook.cn/restServer.php',$post_string); */ function request_by_curl($remote_server, $post_string) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $remote_server); curl_setopt($ch, CURLOPT_POSTFIELDS, 'mypost=' . $post_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, "Jimmy's CURL Example beta"); $data = curl_exec($ch); curl_close($ch); return $data; } /** * 其它版本 * 使用方法: * $post_string = "app=request&version=beta"; * request_by_other('http://facebook.cn/restServer.php',$post_string); */ function request_by_other($remote_server, $post_string) { $context = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded' . 'rn'.'User-Agent : Jimmy's POST Example beta' . 'rn'.'Content-length:' . strlen($post_string) + 8, 'content' => 'mypost=' . $post_string) ); $stream_context = stream_context_create($context); $data = file_get_contents($remote_server, false, $stream_context); return $data; } ?> |
html代码:
代码如下 | 复制代码 |
<form action="/message/index/csv" encType="multipart/form-data" method="post" target="uploadcvs"> |
target="uploadcvs",添加target时调试代码不好调试,建议调试时去掉这行代码
php代码:
代码如下 | 复制代码 |
public function csvAction(){ //获取数据库中的username信息 |
js代码:
代码如下 | 复制代码 |
//data就是".$feed." |
Upload.php文件
代码如下 | 复制代码 |
<?php //通知csv文件 //原cvs保留 //正确csv创建 //错误csv创建 //返回3个文件(用于查看失败列表与把成功的列表内容写入隐藏域中传递到数据库中) public function mkdirs($dir, $mode = 0777) { |
相关文章
- if( isset($_FILES['upImg']) ) { if( $userGroup[$loginArr['group']]['upload'] == 0 ) { echo '{"error":"您所在的用户组无权上传图片!"}'; } else...2016-11-25
- 在 php 获取图片尺寸的方法我们可以使用 getimagesize 获取图片尺寸的效率是很低的,首先需要获取整个的图片信息,然后再进行操作,下面的例子更科学算法更好,我们一起来看...2016-11-25
- 这款图片上传源代码是一款可以上传图片并且还具有给上传的图片生成缩略图与增加水印功能哦,可以说是一款完美的图片上传类哦。 代码如下 复制代码 ...2016-11-25
- 这篇文章主要为大家详细介绍了iOS实现音乐播放器图片旋转,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-12-08
- <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1...2016-11-25
- 本文介绍利用C#代码实现图片旋转360度,具体实例代码已附上,仅供大家参考,希望对大家有所帮助...2020-06-25
- 这款图片上传代码可以把上传的图片增加水印,生成小图片,同时还可以生成文字水印。 代码如下 复制代码 class upimages { var $annexf...2016-11-25
- 使用.net的方法GetThumbnailImage生成的缩略图失真严重,这里推荐一种不失真生成缩略图的方法...2021-09-22
- 等比例生成缩略图的php程序 这个程序很实现,但只是用来进来等比例生成缩略图哦,你要把文件上传到服务器,然后再由此函数来操作,有需要的朋友参考一下。 等比例生成缩...2016-11-25
- 一款实现的生成小图功能的实现代码,有需要的朋友可以参考,每个都有详细的说明参数。 代码如下 复制代码 <form action="uploads.php" method=...2016-11-25
- 本文章里面image就是你要生成的图片地址哦,这是一php按比例生成缩略图代码,只要给你图片他就能生成指定大小的图片哦,并且不变形ekt 代码如下 复制代码 ...2016-11-25
- 图片按在比较进行放大缩小,这得利用php教程 gd库的函数现实现,我们会利用到imagecreatetruecolor(),imagecopyresampled()来操作 function my_image_resize($src_file,...2016-11-25
android获取图片尺寸的两种方式及bitmap的缩放操作
这篇文章主要介绍了android获取图片尺寸的两种方式及bitmap的缩放操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-28- 网站大多数生成缩略图都是按比例操作的,今天我们来看看可以固定图片大小">图片大小,不够的地方自动填充空白哦。有需要的朋友可以参考一下。 <?php教程 error_report...2016-11-25
- 这篇文章主要介绍了ASP.NET实现上传图片并生成缩略图的方法,提供了一个asp.net上传图片与生成缩略图的方法,并给出了改进程序供大家对比分析,需要的朋友可以参考下...2021-09-22
- 本文章提供这款图片处理类,他可以做的事情有把图片生成缩略图,可能给图片增加水印以及获取图片信息,算是比较实用代码又简洁的函数*/ 代码如下 复制代码 ...2016-11-25
- 今天小编在这里就来给美图秀秀的这一款软件的使用者们来说一下批量修改图片尺寸的方法,各位想知道具体处理方法的使用者们,那么下面就快来跟着小编一起看一看教程吧。 ...2016-09-14
- PHP令我们惊喜的就是在图形图象处理方面要忧于ASP,用GD库PHP就可以轻松的实现缩略图。这一篇文章我们的目的就是用GD来生成缩略图,PHP可以把缩略图直接生成输送到浏览器...2016-11-25
- 这篇文章主要为大家介绍了图片旋转、鼠标滚轮缩放、镜像、切换图片js代码具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-01-21
- <?php 代码如下 复制代码 if ($_GET['action'] == 'save') { $up = new upload(); $up->set_dir(dir...2016-11-25