之前用的生成缩略图的函数,是把整张图片存成一定大小,该变形还是会变形,不过图确实小了,而且客户也没说什么,就懒了一下,今天遇到一个比较严的客户,对尺寸把握的挺细,就说如果比例上有问题,看看能不能裁剪一下,搜了搜,找了段代码,一试就成了,感觉还行,代码如下:

<?php
/*
*说明:函数功能是把一个图像裁剪为任意大小的图像,图像不变形
* 参数说明:输入 需要处理图片的 文件名,生成新图片的保存文件名,生成新图片的宽,生成新图片的高
* written by smallchicken
* time 2008-12-18
*/
// 获得任意大小图像,不足地方拉伸,不产生变形,不留下空白
function my_image_resize($src_file, $dst_file , $new_width , $new_height) {
if($new_width <1 || $new_height <1) {
echo "params width or height error !";
exit();
}
if(!file_exists($src_file)) {
echo $src_file . " is not exists !";
exit();
}
// 图像类型
$type=exif_imagetype($src_file);
$support_type=array(IMAGETYPE_JPEG , IMAGETYPE_PNG , IMAGETYPE_GIF);
if(!in_array($type, $support_type,true)) {
echo "this type of image does not support! only support jpg , gif or png";
exit();
}
//Load image
switch($type) {
case IMAGETYPE_JPEG :
$src_img=imagecreatefromjpeg($src_file);
break;
case IMAGETYPE_PNG :
$src_img=imagecreatefrompng($src_file);
break;
case IMAGETYPE_GIF :
$src_img=imagecreatefromgif($src_file);
break;
default:
echo "Load image error!";
exit();
}
$w=imagesx($src_img);
$h=imagesy($src_img);
$ratio_w=1.0 * $new_width / $w;
$ratio_h=1.0 * $new_height / $h;
$ratio=1.0;
// 生成的图像的高宽比原来的都小,或都大 ,原则是 取大比例放大,取大比例缩小(缩小的比例就比较小了)
if( ($ratio_w < 1 && $ratio_h < 1) || ($ratio_w > 1 && $ratio_h > 1)) {
if($ratio_w < $ratio_h) {
$ratio = $ratio_h ; // 情况一,宽度的比例比高度方向的小,按照高度的比例标准来裁剪或放大
}else {
$ratio = $ratio_w ;
}
// 定义一个中间的临时图像,该图像的宽高比 正好满足目标要求
$inter_w=(int)($new_width / $ratio);
$inter_h=(int) ($new_height / $ratio);
$inter_img=imagecreatetruecolor($inter_w , $inter_h);
imagecopy($inter_img, $src_img, 0,0,0,0,$inter_w,$inter_h);
// 生成一个以最大边长度为大小的是目标图像$ratio比例的临时图像
// 定义一个新的图像
$new_img=imagecreatetruecolor($new_width,$new_height);
imagecopyresampled($new_img,$inter_img,0,0,0,0,$new_width,$new_height,$inter_w,$inter_h);
switch($type) {
case IMAGETYPE_JPEG :
imagejpeg($new_img, $dst_file,100); // 存储图像
break;
case IMAGETYPE_PNG :
imagepng($new_img,$dst_file,100);
break;
case IMAGETYPE_GIF :
imagegif($new_img,$dst_file,100);
break;
default:
break;
}
} // end if 1
// 2 目标图像 的一个边大于原图,一个边小于原图 ,先放大平普图像,然后裁剪
// =if( ($ratio_w < 1 && $ratio_h > 1) || ($ratio_w >1 && $ratio_h <1) )
else{
$ratio=$ratio_h>$ratio_w? $ratio_h : $ratio_w; //取比例大的那个值
// 定义一个中间的大图像,该图像的高或宽和目标图像相等,然后对原图放大
$inter_w=(int)($w * $ratio);
$inter_h=(int) ($h * $ratio);
$inter_img=imagecreatetruecolor($inter_w , $inter_h);
//将原图缩放比例后裁剪
imagecopyresampled($inter_img,$src_img,0,0,0,0,$inter_w,$inter_h,$w,$h);
// 定义一个新的图像
$new_img=imagecreatetruecolor($new_width,$new_height);
imagecopy($new_img, $inter_img, 0,0,0,0,$new_width,$new_height);
switch($type) {
case IMAGETYPE_JPEG :
imagejpeg($new_img, $dst_file,100); // 存储图像
break;
case IMAGETYPE_PNG :
imagepng($new_img,$dst_file,100);
break;
case IMAGETYPE_GIF :
imagegif($new_img,$dst_file,100);
break;
default:
break;
}
}// if3
}// end function
?>

php裁剪上传图片生成缩略图相关推荐

  1. 使用Uploadify实现上传图片生成缩略图例子,实时显示进度条

    不了解Uploadify的,先看看前一篇详细说明 http://www.cnblogs.com/XuebinDing/archive/2012/04/26/2470995.html Uploadify ...

  2. java 上传图片 生成缩略图_将图片生成缩略图Java代码实现

    在工作中经常会遇到图片处理相关的需求,比如说一些图片网站只展示相关的缩略图,而真实的图片可能很大而不是直接展示.所以就需要在上传相关的图片后直接对图片进行处理生成相关的缩略图.实现代码如下: impo ...

  3. php图片制作源码,php进行图片裁剪及生成缩略图程序源代码

    我们经常会遇到对图像进行裁剪动作,下面这段代码就是裁剪的源码 处理方法是: 1.当原图的宽或高任一比规定的尺寸小,只进行等比缩略处理, 2.当原图的宽与高都比规定尺寸大,先进行等比缩略处理,然后算出居 ...

  4. java 上传图片 生成缩略图_上传图片同时生成缩略图

    packagecn.conris.sys.utils;import java.io.*;import java.awt.*;import java.awt.image.*;importjava.awt ...

  5. java 生成缩略图_Java实现等比例缩略图

    1.简介:Web应用为上传图片生成缩略图是常见的基本功能,通过缩略图生成提高了信息浏览时的性能,在保证用户使用体验的同时减少了数据传输量. 2.实现图片等比例缩略图生成,方式及相关工具介绍: (1)T ...

  6. 上传文件资料并生成缩略图

    目录 一:需求 二:如何实现需求,以及其中遇到的问题? 需求分析时遇到的问题 编码过程中遇到的问题 三:流程图与UML图 四:上传文件资料生成缩略图 1.上传图片生成缩略图--FastDFS 2.上传 ...

  7. fastdfs上传文件资料(PDF,视频,图片,FileCaseUtil,FileUploadUtil)并生成缩略图

    javacv里面有类型转换器的使用,对视频图片的处理工具等等 一.UML图 二.代码 pom依赖 <!-- fastdfs--><dependency><groupId& ...

  8. flask上传图片以及生成缩略图

    flask在开发微信公众号或者小程序时会涉及到手机端上传图片以及生成缩略图的需求(注意,一般涉及到图文都是把图片和文字分开储存到两张表中,用外键作为连接) 第一步, 将本地图片上传 1.前端模板: & ...

  9. php裁剪图片白边,php生成缩略图填充白边(等比缩略图方案)

    网站上传图片后生成缩略图应该是非常常用的功能了,通常来讲为了网站显示美观,缩略图会是同样尺寸,比如最近笔者做的一个站点,缩略图规格要求都是160×120.但是如果上传的图片比例和缩略图不一致,直接缩放 ...

最新文章

  1. 易生信-扩增子教程02-真菌引物选择
  2. 每周AI应用方案精选:虹膜识别;基于深度学习人脸识别方案等
  3. 数据库密码加密 使用的是 druid加密
  4. Linux 面试最高频的 5 个基本问题!
  5. 【转】激活物料分类帐
  6. CreateFile
  7. 斯坦福大学成立以人为本AI研究院 计算机科学教授李飞飞任院长
  8. 中山电子科技大学计算机学院分数线,电子科技大学中山学院
  9. JadClipse反编译工具在Eclipse中的安装
  10. 华为集齐 AI 龙珠,“召唤神龙”为期不远
  11. 从本地文件系统迁移oracle数据库到ASM
  12. jsp中运用html语言,JSP技术-第2章 HTML语言.doc
  13. Excel表格数据生成sql插入语句
  14. 带你认识PLC输入的源型与漏型接法
  15. 深夜加油站遇到苏格拉底
  16. c++编译报错:ld returned 1 exit status
  17. python零基础电子书免费下载-零基础入门学习Python PDF 扫描版
  18. android开源日志库的使用
  19. Deep Match to Rank Model for Personalized Click-Through Rate Prediction
  20. 如何让微信丢骰子永远只出“666”

热门文章

  1. 请求转发和重定向的区别及什么时候使用
  2. MySQL数据库初体验
  3. torch.chunk与nn.Conv2d groups
  4. 图像配准融合(一)——基于互信息的图像配准方法(c++)
  5. Gson解析异常com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN解决方案
  6. 1278:【例9.22】复制书稿(book)
  7. 采集并显示实时环境温度,环境温度范围为 0°C-40°C,LED 显示 5 位。
  8. confluence 配置
  9. 怎么把html换成gif,怎么将mp4转换成gif 把mp4转换成高清gif的方法
  10. LM2596-5.0开关电源电感的选取