本例子介绍使用php自带的GD库对png和jpg图片进行放大和缩小处理

$target_width = 120; //目标图片宽度

$target_height = 150; //目标图片高度

$target_img = 'me.jpg'; //剪切图片

deal($target_width,$target_height,$target_img);  //调用主函数

主函数

/**

*主函数: 获取图片信息,准备参数

*/

function deal($target_width,$target_height,$target_img){

$img_info=getimagesize($target_img); // 获取原图尺寸

$original_width=$img_info[0]; //原图片宽度

$original_height=$img_info[1]; //原图片高度

$original_mime=$img_info['mime'];

$type=substr($original_mime,6); //原本$original_mime值为'image/类型',通过从第六位字符开始截取得到图片类型

$target_scale = $target_height/$target_width; //目标图像长宽比

$original_scale = $original_height/$original_width; // 原图片长宽比

if ($original_scale>=$target_scale){ // 过高

$w = intval($src_w);

$h = intval($target_scale*$w);

$x = 0;

$y = ($original_height - $h)/3;

} else { // 过宽

$h = intval($original_height);

$w = intval($h/$target_scale);

$x = ($original_width - $w)/2;

$y = 0;

}

switch($type){

case 'jpeg':

dealjpg($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height); //调用处理jpg函数

break;

case 'png':

dealpng($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height); //调用处理png函数

break;

default:

echo "请确认需要处理图片类型是否正确";

break;

}

}

处理jpg函数

/**

* 处理jpg函数

*/

function dealjpg($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height){

// 剪裁

$source=imagecreatefromjpeg($target_img); //创建一个新图象

$croped=imagecreatetruecolor($w, $h); //新建一个真彩色图像

imagecopy($croped, $source, 0, 0, $x, $y, $original_width, $original_height); //拷贝图像的一部分

// 缩放

$scale = $target_width / $w;

$target = imagecreatetruecolor($target_width, $target_height); //新建一个真彩色图像

$final_w = intval($w * $scale);

$final_h = intval($h * $scale);

imagecopyresampled($target, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h); //重采样拷贝部分图像并调整大小

// 保存

$timestamp = time();

imagejpeg($target, "$timestamp.jpg");

imagedestroy($target);

}

处理png函数

/**

* 处理png函数

*/

function dealpng($target_img,$w,$h,$x,$y,$original_width,$original_height,$target_width,$target_height){

// 剪裁

$source=imagecreatefrompng($target_img);

$croped=imagecreatetruecolor($w, $h); //新建一个真彩色图像

imagecopy($croped, $source, 0, 0, $x, $y, $original_width, $original_height); //拷贝图像的一部分

// 缩放

$scale = $target_width / $w;

$target = imagecreatetruecolor($target_width, $target_height); //新建一个真彩色图像

$final_w = intval($w * $scale);

$final_h = intval($h * $scale);

imagecopyresampled($target, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h); //重采样拷贝部分图像并调整大小

// 保存

$timestamp = time();

imagepng($target, "$timestamp.png");

imagedestroy($target);

}

php图片合并png保存图片大小,php缩放处理png和jpg图片相关推荐

  1. css控制背景图片随div的大小而缩放

    在网页布局时我们经常会遇到这样的问题:图片的分辨率是1024*768,在1024*748的屏幕上能显示完整,一旦在800*600的屏幕上是就显示不完整,为了让图片的大小能适应不同的分辨率,可以这样来设 ...

  2. vb中怎么使图片适应框的大小_怎么让放进的图片随框大小而变

    当前位置:我的异常网» VB » 怎么让放进的图片随框大小而变 怎么让放进的图片随框大小而变 www.myexceptions.net  网友分享于:2013-01-30  浏览:6次 如何让放进的图 ...

  3. gd库处理图片(将正方形转换圆形) (调整 头像大小)(文字图片合并)(创建画布)

    /*** 生成缩略图* $imgSrc 图片源路径* $resize_width 图片宽度* $resize_height 图片高度* $dstimg 缩略图路径* $isCut 是否剪切图片*/ f ...

  4. 图片缩放 转换bpp 图片合并

    图片缩放 缩放原理: 原图和缩放图内点的位置,在图片中的相对位置不变. 缩放图中每个点的都可以根据图中公式计算出在原图中的位置,然后把原图颜色赋给缩放图.可以用两个for循环复制数据. 函数原型:in ...

  5. YDOOK : CSS div 设置背景图片大小自动缩放

    YDOOK : CSS div 设置背景图片大小自动缩放 设置示例: 选择器{width:100%;height:100%;background-repeat:no-repeat:background ...

  6. php背景图片随页面大小改变,css背景图根据屏幕大小自动缩放

    css背景图根据屏幕大小自动缩放 代码: html,body{margin:0px;padding:0px;} #background { position: fixed;top: 0;left: 0 ...

  7. python图片保存_python保存图片

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 最近在写爬虫但是图片保存用了很多种方法都没办法实现最后用这种方法实现了impor ...

  8. NPOI随笔——图片在单元格等比缩放且居中显示

    NPOI导出的图片默认是在单元格左上方,这使得图片在单元格显示得很难看.居中,且等比缩放,才是图片在单元格上的完美展示. /// <summary>/// 图片在单元格等比缩放居中显示// ...

  9. css图片横向压缩,【css样式生成 图片合并压缩工具】Sprite,你值得拥有

    好久好久没有更新博客了,越来越懒...话说懒也有懒的好处,懒的时候你可能会想着用些神马方法来帮你偷懒.没错,下面就给大家介绍个博主前不久开发的[css样式生成 & 图片合并压缩工具]Spirt ...

最新文章

  1. linux查看系统版本信息命令
  2. linux 新开窗口到最前,怎么设置一个窗口总是在电脑桌面的最前
  3. 5.1.5 IO核心子系统
  4. View视图类与Dialog对话框通信实例
  5. 2.2 Wrappers访问控制
  6. 使用科大讯飞语音转文字的服务进行电话录音分析
  7. 机器学习 vs 深度学习到底有啥区别,为什么更多人选择机器学习
  8. 计算机网络基础 — Bypass 网卡
  9. 数字信号处理前瞻(note1):奈奎斯特与折叠频率
  10. nmn对卵巢的作用,nmn吃多久对卵巢,女性知识!
  11. Java SE 003 原生数据类型使用陷阱
  12. exchange java ews_Exchange服务器之使用EWS读取Exchange邮件
  13. Java网络编程socket基础学习
  14. Swing游戏开发——飞机大战
  15. java dispose事件_求助!!为什么我的dispose()不起作用
  16. php购物车页面如何做,HTML代码实现简易购物车
  17. 四旋翼飞行器平衡传感器数据 处理方法探讨
  18. 《微服务设计》(二)---- 演变式架构师
  19. 3个5相乘列乘法算式_6的乘法口诀教学设计范文
  20. 认罪吧,你的代码已经出卖了你!

热门文章

  1. 如何在Python中注释掉一段代码[重复]
  2. git merge和git merge --no-ff有什么区别?
  3. 50以内的质数顺口溜_【停课不停学】学习妙招|小学数学学习中的顺口溜,记住了事半功倍!...
  4. logback日志配置文件
  5. 已经发车的票还能取出来吗_网上预订汽车票不知道怎么退票?
  6. Git:clean的用法
  7. java axis2 jar_Java axis2.jar包详解及缺少jar包错误分析
  8. websocket传输数据大小限制_WebSocket基础知识笔记
  9. 力扣——最后一个单词的长度
  10. 洛谷——P1010 [NOIP1998 普及组] 幂次方