PHP图像缩放和裁剪

裁剪:

<?php
header(‘Content-type:image/jpeg‘);
$img=imagecreatefromjpeg(‘images/girl.jpg‘);
//在本地取一图像按JPEG输出(取样的原图像src_image)
$imge=imagecreatetruecolor(1000,1000);
//建立一个长宽为1000的画布(取样完的原预想拷贝到目标的图像dst_image)
imagecopyresampled($imge,$img,0,0,0,0,500,500,300,300);
//采样图像拷贝部分图像到另一图像并调整大小 
//dst_image:目标图像资源 src_image:源图像资源(要采样的那个图像资源)
imagejpeg($imge);
imagedestroy($img);
imagedestroy($imge);
?>

步骤1:建立要取样的图像。

步骤2:建立要被拷贝的目标画布。

步骤3:利用imagecopyresampled裁剪拷贝。

步骤4:输出图像,释放图像。

缩放:

<?php
header(‘Content-type:image/jpeg‘);
$img=imagecreatefromjpeg(‘images/girl.jpg‘);
//在本地取一图像按JPEG输出(取样的原图像src_image)
$width=800;//设定画布宽度
$imgWidth=imagesx($img);//量度JPEG图像的宽度
$imgHeight=imagesy($img);//量度JPEG图像的高度
//$height=$imgHeight/($imgWidth/$width);
$height=$width/($imgWidth/$imgHeight);//计算画布的高
$imge=imagecreatetruecolor($width,$height);
//建立一个画布(取样完的图像拷贝到目标的图像dst_image)
imagecopyresampled($imge,$img,0,0,0,0,$width,$height,$imgWidth,$imgHeight);
//采样图像拷贝部分图像到另一图像并调整大小 
//dst_image:目标图像资源 src_image:源图像资源(要采样的那个图像资源)
imagejpeg($imge);
imagedestroy($img);
imagedestroy($imge);
?>

步骤1:建立要取样的图像。

步骤2:建立要被拷贝的目标画布。

步骤3:利用imagecopyresampled缩放。因为要缩放所以要先知道插入图片的长和高,这个利用函数imagesx,imagesy就可以知道,然后我们设置画布的宽是800,高是未知,那么公式就是$height=$width/($imgWidth/$imgHeight)得出高以后,把相应数据写入函数imagecopyresampled。

步骤4:输出图像,释放图像。

时间: 2024-10-11 21:30:44

PHP图像缩放和裁剪的相关文章

Android Bitmap 常见的几个操作:缩放,裁剪,旋转,偏移

Android Bitmap 相关操作 常见的几个操作:缩放,裁剪,旋转,偏移      很多操作需要 Matrix 来支持:Matrix 通过矩阵来处理位图,计算出各个像素点的位置,从而把bitmap显示出来. matrix里有一个3x3的矩阵,用于图像处理: MSCALE_X MSKEW_X MTRANS_X MSKEW_Y MSCALE_Y MTRANS_Y MPERSP_0 MPERSP_1 MPERSP_2 根据变量名能猜出具体的用途:缩放X 偏移X 平移X偏移Y 缩放Y 平移Y透视0

nginx实现图片的缩放和裁剪

最近在做壁纸的项目,会要求根据原图生成不同的分辨率来适配手机.目前设计的方案是只保存一张原图,不同分辨率的图片在请求时根据原图动态裁剪,nginx层实现. 例: 原图url:http://s.qdcdn.com/cl/12526976.jpg 客户端请求的url:http://s.qdcdn.com/cl/12526976,240x400.jpg 则在请求时,服务器nginx层根据原图,动态裁剪出240x400分辨率的图片返回给客户端. nginx层使用http_image_filter_mod

图像缩放算法

图像缩放算法较多,下面仅以最邻近插值算法和双线性插值算法作介绍. 如下图1所示,表示原始图像和缩放以后的图像. 图1 图像缩放(原始图像à缩放图像) 图像缩放就是将原始图像中的点经过某一算法映射到目标图像的点的行为,即要找到目标图像中的点p1对应在原始图像中点p0,简单而言就是找点p0. 假设: 原始图像src的分辨率为(srcW * srcH): 目标图像dst的分辨率为(dstW * dstH). 那么: 原始图像宽与目标图像宽的比例 原始图像高与目标图像高的比例 由 所以,原始图像中的点p

PHP图片缩放,裁剪和压缩

Google PageSpeed Insights可以对网页加载速度评分,并给出优化建议 简单来说,优化图片即使用合适尺寸的图片(缩放,裁剪),压缩图片 这里只介绍jpng和png两种图片格式 软件准备: imagemagick apt-get install imagemagick   jpegtran apt-get install libjpeg-turbo-progs   optipng apt-get install optipng pngquant apt-get install p

图像缩放_OpenCv

图像缩放是一种比较简单的图像处理操作,这里给出opencv中的代码, opencv的版本C语言接口 int resize_c() { const char *pstrImageName = "lena.jpg"; const char *pstrSaveImageName = "lena缩放图.jpg"; const char *pstrWindowsSrcTitle = "原图"; const char *pstrWindowsDstTitle

opencv2 矩阵方式 resize图像缩放代码(转载)

http://blog.sina.com.cn/s/blog_74a459380101r0yx.html opencv2 矩阵方式 resize图像缩放代码(转载) (2014-05-16 09:55:35) 转载▼   分类: Opencv_Function 最近学习opencv的时候遇到的一些技术问题,拿出来分享一下.opencv1和opencv2最大的区别就是c++支持,这使得网上有些资料是opencv1的c语言写的,而有些人喜欢c++,当然接口函数也就不同了.下面是一个c++的openc

图像处理之基础---图像缩放中的一些 灰度插值算法

在图像缩放,旋转等一些图像处理中,对图像进行插值是不可缺少的一个步骤,下面对一些常用的插值算法进行介绍: 1.最近邻插值 这种插值方法是最简单的一种插值算法,图像输出的像素值的大小直接设为与其最邻近的点的大小即可,这个算法最简单,不需要多说,可以表示为 f(x,y) = g(  round(x)  ,   round(y)  ) 原图                                                                                  

视频图像处理基础知识0(双线性插值算法进行图像缩放)

双线性插值(说的很明白) 来自:http://www.cnblogs.com/linkr/p/3630902.html http://www.cnblogs.com/linkr/p/3630902.html 双线性插值,这个名字咋一听很高大上的样纸,再在维基百科上一查(见文末,我去,一堆的公式吓死人),像俺这种半文盲,看到公式脑子就懵的类型,真心给跪.虽然看着好复杂,但仔细一看道理再简单不过了,所以还是自己梳理一下好. 双线性插值,顾名思义就是两个方向的线性插值加起来(这解释过于简单粗暴,哈哈)

图像编程学习笔记7——图像缩放

假设放大因子为ratio,(为了避免新图过大或过小,我们在程序中限制0.25≤ratio≤4),缩放(zoom)的变换矩阵很简单: (2.13) 缩放变换的源代码如下,因为和转置的那段程序很类似,程序中的注释就简单一些. [cpp] view plaincopy /** * 函数名: zoom * 参  数: ratio -- 缩放率 * 功  能: 对图片进行水平和垂直镜像操作 *         只保存原图大小的图像数据,如果没有就用白色填充 */ void zoom(double rati