首页 后端开发 php教程 php等比缩放图片

php等比缩放图片

Jul 28, 2016 am 08:26 AM
break NIM param

步骤如下:
1.获取图片的基本信息
用这个getimagesize函数

2.判断图片资源类型并创建对应图片资源
用这个getPicType函数(自定义函数)

3.计算缩放比例
原则是取最小的缩放系数.例如:800*600的图片,缩放到200*200以下,则缩放系数为scale=200/800>200/600?200/600:200/800; 因为1/4

4.计算缩放后的尺寸
wdith = floor(800*1/4);向下取整
height = floor(600*1/4);
结果缩放后的图片变为200*150

5.创建目标图像资源
用这个imagecreatetruecolor函数,创建一个真彩的图像

6.等比缩放
用这个imagecopyresampled函数实现缩放

7.输出图像
用这个outputImage函数(自定义函数)

8.释放图片资源
用这个imagedestroy函数

缩放前后如图:
750*525
 php等比缩放图片
200*140
 php等比缩放图片

代码如下:

<code><span>/**
 *<span> @function</span> 等比缩放函数(以保存的方式实现)
 *<span> @param</span> string $picname 被缩放的处理图片源
 *<span> @param</span> int $maxX 缩放后图片的最大宽度
 *<span> @param</span> int $maxY 缩放后图片的最大高度
 *<span> @param</span> string $pre 缩放后图片名的前缀名
 *<span> @return</span> string 返回后的图片名称(带路径),如a.jpg --> s_a.jpg
 */</span><span><span>function</span><span>scalePic</span><span>(<span>$picname</span>,<span>$maxX</span>=<span>100</span>,<span>$maxY</span>=<span>100</span>,<span>$pre</span>=<span>'s_'</span>)</span>
{</span><span>$info</span> = getimagesize(<span>$picname</span>); <span>//获取图片的基本信息</span><span>$width</span> = <span>$info</span>[<span>0</span>];<span>//获取宽度</span><span>$height</span> = <span>$info</span>[<span>1</span>];<span>//获取高度</span><span>//判断图片资源类型并创建对应图片资源</span><span>$im</span> = getPicType(<span>$info</span>[<span>2</span>],<span>$picname</span>);
    <span>//计算缩放比例</span><span>$scale</span> = (<span>$maxX</span>/<span>$width</span>)>(<span>$maxY</span>/<span>$height</span>)?<span>$maxY</span>/<span>$height</span>:<span>$maxX</span>/<span>$width</span>;
    <span>//计算缩放后的尺寸</span><span>$sWidth</span> = floor(<span>$width</span>*<span>$scale</span>);
    <span>$sHeight</span> = floor(<span>$height</span>*<span>$scale</span>);
    <span>//创建目标图像资源</span><span>$nim</span> = imagecreatetruecolor(<span>$sWidth</span>,<span>$sHeight</span>);
    <span>//等比缩放</span>
    imagecopyresampled(<span>$nim</span>,<span>$im</span>,<span>0</span>,<span>0</span>,<span>0</span>,<span>0</span>,<span>$sWidth</span>,<span>$sHeight</span>,<span>$width</span>,<span>$height</span>);
    <span>//输出图像</span><span>$newPicName</span> = outputImage(<span>$picname</span>,<span>$pre</span>,<span>$nim</span>);
    <span>//释放图片资源</span>
    imagedestroy(<span>$im</span>);
    imagedestroy(<span>$nim</span>);
    <span>return</span><span>$newPicName</span>;
}

<span>/**
 * function 判断并返回图片的类型(以资源方式返回)
 *<span> @param</span> int $type 图片类型
 *<span> @param</span> string $picname 图片名字
 *<span> @return</span> 返回对应图片资源
 */</span><span><span>function</span><span>getPicType</span><span>(<span>$type</span>,<span>$picname</span>)</span>
{</span><span>$im</span>=<span>null</span>;
    <span>switch</span>(<span>$type</span>)
    {
        <span>case</span><span>1</span>:  <span>//GIF</span><span>$im</span> = imagecreatefromgif(<span>$picname</span>);
            <span>break</span>;
        <span>case</span><span>2</span>:  <span>//JPG</span><span>$im</span> = imagecreatefromjpeg(<span>$picname</span>);
            <span>break</span>;
        <span>case</span><span>3</span>:  <span>//PNG</span><span>$im</span> = imagecreatefrompng(<span>$picname</span>);
            <span>break</span>;
        <span>case</span><span>4</span>:  <span>//BMP</span><span>$im</span> = imagecreatefromwbmp(<span>$picname</span>);
            <span>break</span>;
        <span>default</span>:
            <span>die</span>(<span>"不认识图片类型"</span>);
            <span>break</span>;
    }
    <span>return</span><span>$im</span>;
}

<span>/**
 * function 输出图像
 *<span> @param</span> string $picname 图片名字
 *<span> @param</span> string $pre 新图片名前缀
 *<span> @param</span> resourse $nim 要输出的图像资源
 *<span> @return</span> 返回新的图片名
 */</span><span><span>function</span><span>outputImage</span><span>(<span>$picname</span>,<span>$pre</span>,<span>$nim</span>)</span>
{</span><span>$info</span> = getimagesize(<span>$picname</span>);
    <span>$picInfo</span> = pathInfo(<span>$picname</span>);
    <span>$newPicName</span> = <span>$picInfo</span>[<span>'dirname'</span>].<span>'/'</span>.<span>$pre</span>.<span>$picInfo</span>[<span>'basename'</span>];<span>//输出文件的路径</span><span>switch</span>(<span>$info</span>[<span>2</span>])
    {
        <span>case</span><span>1</span>:
            imagegif(<span>$nim</span>,<span>$newPicName</span>);
            <span>break</span>;
        <span>case</span><span>2</span>:
            imagejpeg(<span>$nim</span>,<span>$newPicName</span>);
            <span>break</span>;
        <span>case</span><span>3</span>:
            imagepng(<span>$nim</span>,<span>$newPicName</span>);
            <span>break</span>;
        <span>case</span><span>4</span>:
            imagewbmp(<span>$nim</span>,<span>$newPicName</span>);
            <span>break</span>;
    }
    <span>return</span><span>$newPicName</span>;
}</code>
登录后复制
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了 php等比缩放图片,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

'AI 工厂”将推动软件全栈重塑,英伟达提供 Llama3 NIM 容器供用户部署 'AI 工厂”将推动软件全栈重塑,英伟达提供 Llama3 NIM 容器供用户部署 Jun 08, 2024 pm 07:25 PM

本站6月2日消息,在目前正在进行的黄仁勋2024台北电脑展主题演讲上,黄仁勋介绍生成式人工智能将推动软件全栈重塑,展示其NIM(NvidiaInferenceMicroservices)云原生微服务。英伟达认为“AI工厂”将掀起一场新产业革命:以微软开创的软件行业为例,黄仁勋认为生成式人工智能将推动其全栈重塑。为方便各种规模的企业部署AI服务,英伟达今年3月推出了NIM(NvidiaInferenceMicroservices)云原生微服务。NIM+是一套经过优化的云原生微服务,旨在缩短上市时间

聊聊PHP switch语句中不使用break的情况 聊聊PHP switch语句中不使用break的情况 Mar 20, 2023 pm 04:55 PM

在PHP中使用switch语句来进行多个分支的选择是很常见的,通常在每个分支结束后会使用break语句来退出switch语句。然而,有些情况下我们不想使用break语句,本文将介绍在PHP switch语句中不使用break的情况。

php里面break的用法是什么 php里面break的用法是什么 Jan 31, 2023 pm 07:33 PM

在php中,break用于跳出当前的语法结构,执行下面的语句;可以在switch、for、while和do while等语句中使用,可以终止循环体的代码并立即跳出当前的循环,执行循环之后的代码。break语句可以带一个参数n,表示跳出循环的层数,如果要跳出多重循环的话,可以用n来表示跳出的层数,如果不带参数默认是跳出本重循环。

JS循环学习:跳出循环语句break和continue JS循环学习:跳出循环语句break和continue Aug 03, 2022 pm 07:08 PM

在之前的文章中,我们带大家学习了JS中的几种循环控制结构(while和do-while循环、for循环​),下面聊聊跳出循环语句break和continue,希望对大家有所帮助!

Java中的break关键字的作用是什么? Java中的break关键字的作用是什么? Apr 23, 2023 am 10:13 AM

说明1、break的作用是跳出现在的循环块(for、while、dowhile)或程序块(switch)。2、循环块的作用是跳出现在循环中的循环体。程序块中的作用是中断和下一个case条件的比较。在switch语句中使用break,终止switch语句。当break用于循环时,跳出循环。在其他地方使用break是没有意义的。实例intsum=0;inti;for(i=1;i

Go语言break停止语句有什么用 Go语言break停止语句有什么用 Jan 18, 2023 pm 03:46 PM

在Go语言中,break停止语句用于循环语句中跳出循环,并开始执行循环之后的语句。break语句可以结束for、switch和select的代码块,另外break语句还可以在语句后面添加标签,表示退出某个标签对应的代码块,标签要求必须定义在对应的 for、switch和select的代码块上。

linux param是什么 linux param是什么 Mar 10, 2023 am 08:58 AM

linux param指的是“module_param”函数,其作用是传递命令行参数;在用户态下编程可以通过“main()”的参数来传递命令行参数,而编写一个内核模块则通过“module_param()”来传递参数。

PHP中break语句的作用及注意事项 PHP中break语句的作用及注意事项 Mar 20, 2024 pm 05:33 PM

PHP中break语句的作用及注意事项在PHP编程中,break语句是一种控制语句,用于中断循环或switch语句的执行。break语句能够立即跳出当前所处的循环或switch语句,使程序执行流程直接跳转到循环或switch语句后的代码部分,从而提高程序执行的效率和灵活性。在实际编程中,break语句具有重要的作用,但同时也需要注意一些细节和注意事项。一、b

See all articles