当前位置: 首页 > 编程日记 > 正文

用PHP生成等比图像的方法

PHP代码

<?php
/************************************************************************
* 函数名称:createSmallImg()
* 函数说明:创建等比例图片
* 输入参数:$dir 保存路径$source_img 原图片名称$small_ex 缩率图文件名后缀$maxwidth 最大宽度$maxheight 最大高度
* 说    明:$maxwidth和$maxheight只能传递一个,如果传最大宽度将自动计算高度,如果传最大高度将自动计算宽度
* 返 回 值:如果创建成功返回文件保存的地址,否则返回false
* 编 写 者:李小宇
* 编写时间:2011/8/18
**************************************************************************/
function createSmallImg($dir,$source_img,$small_ex="_s",$maxwidth='',$maxheight='') {if(!empty($maxwidth) && !empty($maxheight)) {return false;}$img_name=substr($source_img,0,-4);$img_ex = strtolower(substr(strrchr($source_img,"."),1));/*注释的这段用作直接在浏览器上显示图片$im=imagecreatefromjpeg($file);header("Content-type: image/jpeg");imagejpeg($im);*/switch($img_ex) {case "jpg":$src_img=imagecreatefromjpeg($dir.$source_img);break;case "gif":$src_img=imagecreatefromgif($dir.$source_img);break;case "png":$src_img=imagecreatefrompng($dir.$source_img);break;}$old_width=imagesx($src_img);$old_height=imagesy($src_img);if(!empty($maxheight) && $old_height>=$maxheight) {$new_height=$maxheight;$new_width=round(($old_width*$new_height)/$old_height);} elseif(!empty($maxwidth) && $old_width>=$maxwidth) {$new_width=$maxwidth;$new_height=round(($old_height*$new_width)/$old_width);}if(!empty($new_width) || !empty($new_height)) {$dst_img=imagecreatetruecolor($new_width,$new_height);imagecopyresampled($dst_img,$src_img,0,0,0,0,$new_width,$new_height,$old_width,$old_height);$smallname=$dir.$img_name.$small_ex.".".$img_ex;switch($img_ex) {case "jpg":imagejpeg($dst_img,$smallname,100);break;case "gif":imagegif($dst_img,$smallname);break;case "png":imagepng($dst_img,$smallname);break;}}return $smallname;
}

imagecopyresampled比imagecopyresized生成的图片更清晰

重采样拷贝部分图像并调整大小

imagecopyresampled() 将一幅图像中的一块正方形区域拷贝到另一个图像中,平滑地插入像素值,因此,尤其是,减小了图像的大小而仍然保持了极大的清晰度。成功时返回 TRUE, 或者在失败时返回 FALSE.

转载于:https://www.cnblogs.com/phpfans/archive/2011/08/19/2145708.html

相关文章:

ARM7启动代码

1:PRESERVE8: Reguire8和Preserve8 C和汇编有8位对齐的要求&#xff0c;这两个伪指令可以满足此要求&#xff0c;存在REQUIRE8<——> PRESERVE8的对应关系&#xff0c;但不是说有一个REQUIRE8就要有一个 PRESERVE8&#xff0c;如果是一个c文件和一个汇编文件的调用&#…

一次完整请求的日志

一次完整请求的日志&#xff1a;各种配置文件&#xff1a;spring-mvc.xml<?xml version"1.0" encoding"UTF-8"?><beans xmlns"http://www.springframework.org/schema/beans" rel"nofollow"" target"_blank"…

Aveva Marine C# 二次开发入门001

1# 引用 C:\AVEVA\Marine\OH12.1.SP4\Aveva.ApplicationFramework.dll C:\AVEVA\Marine\OH12.1.SP4\Aveva.ApplicationFramework.Presentation.dll 2# 引用命名空间&#xff0c; using Aveva.ApplicationFramework.Presentation;using Aveva.ApplicationFramework; 3# 继承接口…

搜集《ASP.NET中常用的26个优化性能方法》

1. 数据库访问性能优化    a.数据库的连接和关闭    访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证&#xff0c;比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响…

【matlab】我要自学网笔记总结 1.3

1.3 1、在matlab的命令行窗口可以直接进行数学运算 2、π 和平方的使用 S pi*r^2 3、如果输入一个多位小数&#xff0c;输出时只显示小数点后四位&#xff0c;但计算的时候使用的是真实值。 如果要改变显示的位数 &#xff08;1&#xff09;可以在 预设 - 命令行窗口 - 数值…

IT规划的企业应用实践(6)研究背景 之 企业信息化建设的诉求

研究背景 之 企业信息化建设的诉求 从实践角度看&#xff0c;企业信息化建设的诸多问题和诉求&#xff0c;可以归纳为以下几个方面&#xff1a; 1. IT系统本身&#xff1a; l 面对成本的压力和客户的要求&#xff0c;在流程方面、运作方面离不开IT支持&#xff0c;IT系统如何支…

Codeforces Gym100812 L. Knights without Fear and Reproach-扩展欧几里得(exgcd)

补一篇以前的扩展欧几里得的题&#xff0c;发现以前写错了竟然也过了&#xff0c;可能数据水&#xff1f;&#xff1f;&#xff1f; 这个题还是很有意思的&#xff0c;和队友吵了两天&#xff0c;一边吵一边发现问题&#xff1f;&#xff1f;&#xff1f; L. Knights without F…

Tarjan无向图连通性

割点&#xff1a;去掉某点x&#xff0c;该无向图分割成两部分&#xff08;及以上&#xff09; 割边&#xff1a;去掉某条边x&#xff0c;该无向图分割成两部分&#xff08;及以上&#xff09; 时间戳&#xff1a;在搜索树上的遍历序号dfn 追溯值&#xff1a;subtree子树和非搜索…

php去除字符串首尾空格(包括全角)(转)

<? $str" dfdfdf曊壷顳 道德观第三附属 "; $str mb_ereg_replace(^( | ), , $str); $str mb_ereg_replace(( | )$, , $str); echo mb_ereg_replace( , "\n ", $str); ?>转载于:ht…

【单片机】写电子钟时遇到的问题

1、<> 与""的区别 1、<> 先去系统目录中找头文件&#xff0c;如果没找到再去当前目录下找。 所以一般用于向标准的头文件如 studio.h 和 stdlib.h 等方法。 2、"" 首先在当前目录下寻找&#xff0c;如果找不到在去系统目录下寻找。这个用于自…

什么是业务组件?

海浪给大家分享了一些关于业务组件的文章&#xff0c;但是什么是业务组件呢&#xff1f;海浪转载了yongtree写的这篇文章。业务组件是一系列不可分割的业务活动&#xff0c;是构建专业化企业的功能模块。业务组件的优势在很大程度上来源于其具备两个相关但截然不同的特性&#…

3.3.2 函数参数不得不说的几件事

函数定义时圆括号内是使用逗号分隔开的形式参数列表&#xff08;parameters&#xff09;&#xff0c;一个函数可以没有参数&#xff0c;但是定义和调用时一对圆括号必须要有&#xff0c;表示这是一个函数并且不接受参数。函数调用时向其传递实参&#xff08;arguments&#xff…

wpf 对控件进行截图,获取快照

有时候我们项目&#xff0c;在执行某个操作后&#xff0c;会生成一些数据结果&#xff0c;如报表一类的东西&#xff0c;我们需要对结果进行保存&#xff0c;甚至是生成word文档。 那么首先获取到控件快照就最基本的条件。 生成快照的静态方法类 using System; using System.Co…

【java】兴唐第二十一节(LinkedList和泛型)

LinkedList知识点 1、实现了Iterable接口的类具有迭代功能。 2、List接口为Collection的子类&#xff0c;表示线形数据列表&#xff0c;其实现类有&#xff1a;ArrayList(数组线性表)与LinkedList(链表) 算了不多说了&#xff0c;上图吧 3、ArrayList是一个可变数组&#xff…

Elgg网站迁移指南

转载地址&#xff1a; http://blog.sina.com.cn/s/blog_84068de60100vr21.html Elgg官方文档上的网站迁移部分是有问题的——缺少了一些重要步骤&#xff0c;而且过程更麻烦。正确的方法如下&#xff1a; 备份网站文件&#xff0c;包括uploads文件夹导出数据库在数据库文件中&a…

INFO:在InstallShield中修改安装包压缩.cab包的大小

如果我们用InstallShield打包一个数据非常大的安装包&#xff08;Basic MSI和InstallScript MSI工程类型&#xff09;&#xff0c;默认情况下安装包会产生多个.cab文件&#xff0c;这里简单说明我们如何修改安装包中.cab文件的大小。首先&#xff0c;有个信息大家需要知道&…

MEF依赖注入实例

什么是MEF 先来看msdn上面的解释&#xff1a;MEF(Managed Extensibility Framework)是一个用于创建可扩展的轻型应用程序的库。 应用程序开发人员可利用该库发现并使用扩展&#xff0c;而无需进行配置。 扩展开发人员还可以利用该库轻松地封装代码&#xff0c;避免生成脆弱的硬…

Data - 数据思维 - 上篇

1 - 概念与定义 如果分析思维是一种结构化思考的体现&#xff0c;那么数据分析思维&#xff08;简称数据思维&#xff09;则是以数据为依托的结构化分析方式。 不同于“我觉得”、“以前是怎样”、“其他人如何”这些直觉化、经验化、类比化的思考方式&#xff0c;数据思维是以…

新生选课系统使用指南

建议选用IE6或者IE7浏览器。 打开浏览器&#xff0c;地址栏输入202.200.112.200&#xff0c; 或者202.200.112.202&#xff0c; 或者202.200.112.210。按回车键。 输入学号和身份证号&#xff08;如果修改过密码&#xff0c;则输入新密码&#xff09;。点“登录”。 点 “学生…

【java】兴唐第二十三节课(暑期第一节TreeSet)

预警&#xff1a;进入暑期培训的博主即将高产似母猪&#xff0c;敬请博友期待。 1、给类添加构造方法 alt shift s 选择Generate Construct using Fields 2、map两种遍历方法 方法一&#xff1a; 获取所有的key值&#xff0c;根据key值获取value值 代码实现&#xff1a; Se…

程序设计分析(开篇)——混沌初开,顿悟设计

一直以来&#xff0c;不断的进行着项目的设计、开发&#xff0c;然而&#xff0c;差的设计&#xff0c;痛苦的维护、编码&#xff0c;让我不断的审视自己的设计是否有问题&#xff0c;在最近的一些思考、理解中&#xff0c;终于有了一些领悟&#xff0c;总结一下过去的设计&…

源代码管理工具调查

任务说明&#xff1a; 一、找出并了解当前较为流行的几种源代码管理工具&#xff08;至少三种&#xff09;&#xff1b; 1、 Visual Source Safe( 简称 VSS )2、 SVN(Subversion) - CVS(Concurrent Version System)的替代和升级版本3、 ClearCase 二、建立表格对这些源代码管理…

从零开始学Go之接口(一):接口

接口是双方约定的一种合作协议。接口实现者不需要关心接口会被怎样使用&#xff0c;调用者也不需要关心接口的实现细节。 接口是一种类型&#xff0c;也是一种抽象结构&#xff0c;不会暴露所含数据的格式、类型及结构。 声明&#xff1a; 接口类型是由一组方法签名定义的集合 …

【java】兴唐第二十四节课

HashMap中put函数的源码分析&#xff1a; &#xff08;一&#xff09;知识点&#xff1a; 1、方法resize&#xff08;&#xff09;的作用是扩容 2、 if ((p tab[i (n - 1) & hash]) null)其中n-1代表最后一个元素的下标&#xff0c;经过和hash的&后获取当前存储nod…

找不到可安装的ISAM”的问题

问题描述&#xff1a; 在 Access 或Sql Server中收到“Could not find installable ISAM”&#xff08;找不到可安装的 ISAM&#xff09;错误信息或者丢失某些文件类 解决方法&#xff1a; 1.注册表编辑器使用不当可能导致严重问题&#xff0c;可能需要重新安装操作系统。Micro…

修改mysql的时间/时区

# 背景 往db中insert数据发现时间不对&#xff0c;因为是新DB&#xff0c;所以猜测是mysql设置不对 # 解决方法 方法一&#xff1a;通过mysql命令行模式下动态修改 show variables like "%time_zone%"; 查看时区 --------------------------| Variable_name | Value…

【java】兴唐第二十五节课(异常和log4j的使用)

异常 1、try catch finally语法&#xff08;附带多重catch&#xff09; 代码实现&#xff1a; public static void main(String[] args) {try {int i 1/0;}catch(ArithmeticException e){System.out.println("出现数学运算异常&#xff1a;" e);}catch(ArrayIndex…

CentOS 命令提示符颜色及样式详解

命令提示符&#xff1a;prompt CentOS下查看当前命令提示符格式&#xff1a; 1 [rootlocalhost ~]# echo $PS1 #显示当前使用的PS1样式 2 [\u\h \W]\$ 命令提示符参数如下&#xff1a; \d &#xff1a;#代表日期&#xff0c;格式为weekday month date&#xff0c;例如&#…

Max_user_connections 与Max_connections 与max_connect_errors

对于连接数的设置&#xff0c;show variables里有三个参数可以对它进行控制&#xff0c;max_connections与max_user_connections以及max_connect_errors。下面对这三个参数相关描述。 max_connections&#xff1a;针对所有的账号所有的客户端并行连接到MYSQL服务的最大并行连接…

压力变动力,存储追求高效率

企业的数据存储量每年都要大幅增长&#xff0c;但是IT预算呈现紧缩趋势。这就是企业面临的最大存储难题&#xff0c;即如何平衡数据增长与提高存储利用率和降低成本之间的关系。 非结构化数据带来的难题 存储最直接的压力来自于不断增长的数据量。今天&#xff0c;我们面对的是…