本篇内容主要讲解“php如何修改图片二进制文件大小”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何修改图片二进制文件大小”吧!
一、为什么需要对图片进行二进制文件大小修改
在 Web 开发中,可以使用很多种方式来将图片展示给用户,而其中最常用的两种方式就是将图片直接加载到页面中或以附件形式提供给用户下载。当使用图片直接加载到页面中时,网页会根据页面的内容来加载图片,如果图片太大,网页加载速度就会变慢,降低用户体验度;最糟糕的情况是可能导致网页的崩溃。而当以附件形式提供给用户下载时,由于一个图片的二进制文件大小(文件体积)过大,则下载速度会过慢,导致用户体验不佳。
因此,对于项目中的图片,我们一定要控制它的二进制文件大小(文件体积)。常用方法是对图片进行压缩和优化。而对于 PHP 开发来说,可以利用 GD 库对图片进行二进制文件大小的修改。
二、GD 库简介
GD 库是一个开源程序库,它以 C 语言编写,用于动态创建图片。该库可以处理 PNG、JPEG、GIF 等格式的图片,通过缩放、裁剪、旋转、添加文字和水印等操作,来生成各种格式的图片。GD 库提供了一系列的函数,这些函数可以通过 PHP 的 GD 扩展来支持。
三、PHP 修改图片二进制文件大小的方法
使用 PHP 修改图片二进制文件大小的方法主要通过压缩和优化实现。下面是利用 PHP 的 GD 库实现压缩和优化的两种方法:
1、通过比例调整图片大小
这种方法可以保持图片的长宽比例不变,只是对图片进行按比例缩放。
代码示例:
<?php $src_file = 'test.jpg'; // 图片的路径和名称 $dst_file = 'thumbnail.jpg'; // 缩略图的路径和名称 $quality = 50; // 压缩后的图片质量,0~100,0 地表示压缩比最高 $max_width = 200; // 图片最大的宽度 // 获取原始图片的宽和高 $size = getimagesize($src_file); $src_width = $size[0]; $src_height = $size[1]; // 计算缩小比例 if($src_width > $max_width){ $shrink = $max_width / $src_width; } else{ $shrink = 1; } // 计算缩略图的宽度和高度 $des_width = intval($src_width * $shrink); $des_height = intval($src_height * $shrink); // 创建图片资源 $src_image = imagecreatefromjpeg($src_file); $des_image = imagecreatetruecolor($des_width, $des_height); // 拷贝并缩放图片 imagecopyresampled($des_image, $src_image, 0, 0, 0, 0, $des_width, $des_height, $src_width, $src_height); // 保存图片 imagejpeg($des_image, $dst_file, $quality); // 释放图片资源 imagedestroy($src_image); imagedestroy($des_image); ?>
这里将 test.jpg 图片按比例缩放,缩放后的宽度最大为 200 像素,保存的图片名称为 thumbnail.jpg,压缩质量为 50。
注:使用此方法还可在缩放时选择裁剪图片。当图片放大或缩小时,应该考虑使用保存透明度的 PNG 格式。
2、直接调整图片的质量
这种方法可以对图片的质量进行对比测量,直接输出为修改过的图片。
代码示例:
<?php $src_file = 'test.jpg'; // 原始图片 $dst_file = 'optimize.jpg'; // 优化后的图片 $quality = 50; // 压缩后的图片质量,0~100,0 地表示压缩比最高 // 创建图片资源 $src_image = imagecreatefromjpeg($src_file); // 优化图片 imagejpeg($src_image, $dst_file,$quality); // 释放图片资源 imagedestroy($src_image); ?>
此代码里,将 test.jpg 图片的压缩质量降低到 50,保存的图片名称为 optimize.jpg。
注:请注意,此方法无法改变图片尺寸。