106)PHP,缩略图代码和结果展示
首先是 代码展示:
<?php
class CImage {
/**
* 生成保持原图纵横比的缩略图,支持.png .jpg .gif
* 缩略图类型统一为.png格式
*@param $srcFile 原图像文件名称
*@param $toW 缩略图宽
*@param $toH 缩略图高
*@param$toFile 缩略图文件名称,为空覆盖原图像文件(我在最后把这个去了,就是直接在浏览器上显示,要是你家改动,就直接换倒数第六行的imagepng($ni,$toinfo);
* @return bool
*/
public static function CreateThumbnail($srcFile, $toW, $toH, $toFile = "") {
if ($toFile == "") {
$toFile = $srcFile;
}
$info = "";
//返回含有4个单元的数组,0-宽,1-高,2-图像类型,3-宽高的文本描述。
//失败返回false并产生警告。
$data = getimagesize($srcFile, $info);
if (!$data)
return false;
//将文件载入到资源变量im中
switch ($data[]) //1-GIF,2-JPG,3-PNG
{
case :
if (!function_exists("imagecreatefromgif")) {
echo "the GD can't support .gif, please use .jpeg or .png! <a href='javascript:history.back();'>back</a>";
exit();
}
$im = imagecreatefromgif($srcFile);
break;
case :
if (!function_exists("imagecreatefromjpeg")) {
echo "the GD can't support .jpeg, please use other picture! <a href='javascript:history.back();'>back</a>";
exit();
}
$im = imagecreatefromjpeg($srcFile);
break;
case :
$im = imagecreatefrompng($srcFile);
break;
}
//计算缩略图的宽高
$srcW = imagesx($im);
$srcH = imagesy($im);
$toWH = $toW / $toH;
$srcWH = $srcW / $srcH;
if ($toWH <= $srcWH) {
$ftoW = $toW;
$ftoH = (int)($ftoW * ($srcH / $srcW));
} else {
$ftoH = $toH;
$ftoW = (int)($ftoH * ($srcW / $srcH));
}
if (function_exists("imagecreatetruecolor")) {
$ni = imagecreatetruecolor($ftoW, $ftoH); //新建一个真彩色图像
if ($ni) {
//重采样拷贝部分图像并调整大小 可保持较好的清晰度
imagecopyresampled($ni, $im, , , , , $ftoW, $ftoH, $srcW, $srcH);
} else {
//拷贝部分图像并调整大小
$ni = imagecreate($ftoW, $ftoH);
imagecopyresized($ni, $im, , , , , $ftoW, $ftoH, $srcW, $srcH);
}
} else {
$ni = imagecreate($ftoW, $ftoH);
imagecopyresized($ni, $im, , , , , $ftoW, $ftoH, $srcW, $srcH);
}
//保存到文件 统一为.png格式
imagepng($ni); //以 PNG 格式将图像输出到浏览器或文件
ImageDestroy($ni);
ImageDestroy($im);
return true;
}
}
//调用这个类的代码:
/*
$name='./new_name.png';
CImage::CreateThumbnail($name,100,100,'') ;
*/
然后那个$name和这个php文件关系:

然后,结果展示:

106)PHP,缩略图代码和结果展示的更多相关文章
- 设计模式之工厂方法模式(代码用Objective-C展示)
前面一篇展示了一个简单工厂模式,这一篇主要是对比,工厂方法模式比简单工厂模式好在哪里?为什么要用这个模式?这个模式的精髓在哪里? 就以计算器为例,结果图如下: 加减乘除运算都是继承自基类运算类,然后工 ...
- 设计模式之单一职责原则(iOS开发,代码用Objective-C展示)
单一职责原则:就一个类而言,应该只有一个引起它变化的原因. 在iOS开发中,我们会很自然的给一个类添加各种各样的功能,比如随便写一个简单的应用程序,一般都会生成一个viewController类,于是 ...
- 显示youtube视频缩略图和Vimeo视频缩略图代码分享
这篇文章主要介绍了显示youtube视频缩略图和Vimeo视频缩略图的代码,需要的朋友可以参考下 function video_image($url){ $image_url = parse_url( ...
- C#生成缩略图代码
/**//// <summary> /// 生成缩略图 /// </summary> /// <param name=&q ...
- Web版记账本开发记录(一)代码和功能展示
一丶基本机构 数据库截图 record表 年份表 index.jsp <%@ page language="java" contentType="text/html ...
- 设计模式之装饰模式(iOS开发,代码用Objective-C展示)
在面向对象编程中有个重要的原则,里氏代换原则:一个软件实体如果使用的是一个父类的话,那么一定适用其子类,而且它察觉不出父类对象与子类对象的区别.也就是说,在软件设计里面,把父类替换成它的子类,程序的行 ...
- 设计模式之策略模式(iOS开发,代码用Objective-C展示)
在实际开发过程中,app需求都是由产品那边给出,往往是他给出第一版功能,我们写好代码后,会相应的给出第二版.第三版功能,而这些功能是在实际使用中,根据用户需求而不断增加的.如果在编码之初,我们并未认识 ...
- SpringBoot 注册Servlet三大组件【Servlet、Filter、Listener】-原生代码+@Bean+效果展示
由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件. 注册三大组件,class MyServlet()/clas ...
- fiddler接口测试,js代码修改日志展示(埋点用)
fiddler 通过fiddler 发送接口信息: http://blog.csdn.net/java2013liu/article/details/53380381 rules--automatic ...
随机推荐
- HTTPS(身披SSL协议的HTTP)
参考链接: HTTP 与 HTTPS 的区别 HTTPS科普扫盲帖 HTTPS小结 HTTP 和 HTTPS 区别 HTTP是明文传输未加密,安全性差,HTTPS(HTTP + SSL)数据传输是加密 ...
- JAVA 算法练习(一)
用java写了几道编程题目,分享给大家 语法和C语言几乎一样,不懂 java 会 c 也可以看明白的. 最大连续数列和 题目说明 对于一个有正有负的整数数组,请找出总和最大的连续数列.给定一个int数 ...
- Java中包的基本管理与编译
在写程序的过程中,总会出现代码编译过关,但是项目偏偏报错的情况,遇到几种情况,都在此一一记录,希望以后少走弯路. 1.添加jsp文件的时候,会报错 Multiple annotations found ...
- @ConfigurationProperties的几个使用细节
1.只有当前组件是容器中的组件,才能使用容器提供的@ConfigurationPropeities功能 2.使用@ConfigurationProperties,被注入字段必须要有set .get 方 ...
- JDK11 JAVA11下载安装与快速配置环境变量教程
https://blog.csdn.net/weixin_40928253/article/details/83590136 1.到Oracle官网下载jdk11,并安装.搜索“jdk",选 ...
- goweb-动作
go-模板引擎 动作 Go 模板的动作就是一些嵌入到模板里面的命令,这些命令在模板中需要放到两个 大括号里{{ 动作 }},之前我们已经用过一个很重要的动作:点(.),它代表了传递给模 板的数据.下面 ...
- JNI的第2种写法:本地方法注册
声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635 孔乙己说,茴香豆的茴有四种写法,今天谈谈JNI的第2种写法:本地方法注册. 这种写法的好处是不需要使用ja ...
- 吴裕雄--天生自然 PHP开发学习:高级
<?php echo date("Y/m/d") . "<br>"; echo date("Y.m.d") . " ...
- HashMap看这篇就够了
HashMap看这篇就够了 一文读懂HashMap Java8容器源码-目录
- UML-领域模型-例子与总结
1.pos处理销售,示例 2.结论 1).每次迭代中,画概念模型只需要30分钟左右.避免瀑布思维. 2).在细化阶段开始构建概念模型