PHP压缩图片

该PHP脚本用于遍历指定目录及其子目录,找到所有的.jpg,.jpeg,.png图片文件,然后进行压缩,转换为ProgressiveJPEG格式,同时限制脚本执行时间和内存使用以处理大量文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运行方式

php ./coimg.php

coimg.php

<?php

set_time_limit(0);
ini_set("max_execution_time", 0);
ini_set("memory_limit", -1);

// 压缩图片
function c_img($path)
{
	$con = @file_get_contents($path);
	$img_obj = @imagecreatefromstring($con);
	if ($img_obj) {
		@imageinterlace($img_obj, 1); //转换为 Progressive JPEG
		@imagejpeg($img_obj, $path, 60); //质量设置为60,取值范围:0(最差质量,文件最小)-100(最佳质量,文件最大)
		@imagedestroy($img_obj);
	}

	// echo "imgs ok:" . realpath($path) . "\n";
}

// 判断是否图片
function is_img($filename)
{
	if (!@file_exists($filename)) {
		return false;
	}

	$types = ".jpg|.jpeg|.png"; //定义检查的图片类型
	$info = @getimagesize($filename);
	if (@empty($info)) {
		return false;
	}

	$ext = @image_type_to_extension($info[2]);
	$ext = @strtolower($ext);
	return @mb_strpos($types, $ext);
}

// 读取目录中的文件
function lists_img($path = "./Uploads")
{
	$resource = @opendir($path);
	while ($file = @readdir($resource)) {
		// 跳过特殊文件夹
		if ($file == "." || $file == "..") {
			continue;
		}

		// 拼接新的路径
		$path_new = $path . "/" . $file;
		// 判断是否文件夹
		if (@is_dir($path_new)) {
			lists_img($path_new);
			continue;
		}

		// 判断是否为图片
		if (is_img($path_new) !== false) {
			c_img($path_new);
		}
	}
	@closedir($resource);
	echo "paths ok:" . realpath($path) . "\n";
}

lists_img();
echo "all ok" . "\n";
<?php class ThumbHandler { var $dst_img;// 目标文件 var $h_src; // 图片资源句柄 var $h_dst;// 新图句柄 var $h_mask;// 水印句柄 var $img_create_quality = 100;// 图片生成质量 var $img_display_quality = 80;// 图片显示质量,默认为75 var $img_scale = 0;// 图片缩放比例 var $src_w = 0;// 原图宽度 var $src_h = 0;// 原图高度 var $dst_w = 0;// 新图总宽度 var $dst_h = 0;// 新图总高度 var $fill_w;// 填充图形宽 var $fill_h;// 填充图形高 var $copy_w;// 拷贝图形宽 var $copy_h;// 拷贝图形高 var $src_x = 0;// 原图绘制起始横坐标 var $src_y = 0;// 原图绘制起始纵坐标 var $start_x;// 新图绘制起始横坐标 var $start_y;// 新图绘制起始纵坐标 var $mask_word;// 水印文字 var $mask_img;// 水印图片 var $mask_pos_x = 0;// 水印横坐标 var $mask_pos_y = 0;// 水印纵坐标 var $mask_offset_x = 5;// 水印横向偏移 var $mask_offset_y = 5;// 水印纵向偏移 var $font_w;// 水印字体宽 var $font_h;// 水印字体高 var $mask_w;// 水印宽 var $mask_h;// 水印高 var $mask_font_color = "#ffffff";// 水印文字颜色 var $mask_font = 2;// 水印字体 var $font_size;// 尺寸 var $mask_position = 0;// 水印位置 var $mask_img_pct = 50;// 图片程度,值越大,合程序越低 var $mask_txt_pct = 50;// 文字合程度,值越小,合程序越低 var $img_border_size = 0;// 图片边框尺寸 var $img_border_color;// 图片边框颜色 var $_flip_x=0;// 水平翻转次数 var $_flip_y=0;// 垂直翻转次数 var $cut_type=0;// 剪切类型 var $img_type;// 文件类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值