此php大小调整代码仅格式化某些图像,而不是其他图像
这段代码将所有jpeg图像调整到我想要的大小,但我有一些图像跳过了调整大小,只是上传到原始大小。在调整大小功能中是否有我遗漏或忽略的内容?(照片详细信息将与代码一起提供) 我尝试了多个图像,除了三个测试图像(细节如下)之外,它们都可以工作此php大小调整代码仅格式化某些图像,而不是其他图像,php,image,Php,Image,这段代码将所有jpeg图像调整到我想要的大小,但我有一些图像跳过了调整大小,只是上传到原始大小。在调整大小功能中是否有我遗漏或忽略的内容?(照片详细信息将与代码一起提供) 我尝试了多个图像,除了三个测试图像(细节如下)之外,它们都可以工作 结果: 这是跳过调整大小并以相同大小进入文件夹的图像,没有任何更改: Myron_3.jpg-种类:JPEG,大小334kb,尺寸:2304 X 3456 这两个项目将产生预期的结果: IMG_0610.JPG-大小:2MB,尺寸:3024x4032。调
结果:
这是跳过调整大小并以相同大小进入文件夹的图像,没有任何更改:
Myron_3.jpg-种类:JPEG,大小334kb,尺寸:2304 X 3456
这两个项目将产生预期的结果:
IMG_0610.JPG-大小:2MB,尺寸:3024x4032。调整大小后:
大小46kb
test_4.jpg-大小:56 kb,尺寸:959 X 957,调整大小后:46kb打字错误<代码>$new\u width=$orignial\u width*比率代码>您可以通过将JPEG密度设置为~80而不是~90来节省磁盘空间,因为人眼仍然无法分辨。请尝试在
if($original_image)
之后添加一个else,如果未调整大小的文件进入其中,请尝试错误日志记录。键入<代码>$new\u width=$orignial\u width*比率代码>您可以通过将JPEG密度设置为~80而不是~90来节省磁盘空间,因为人眼仍然无法分辨。请尝试在if($original_image)
之后添加一个else,如果未调整大小的文件进入其中,请尝试错误日志记录。
<?php
function resize_image($file, $max_resolution){
if(file_exists($file)){
$original_image = imagecreatefromjpeg($file);
//resolution
$original_width = imagesx($original_image);
$original_height = imagesy($original_image);
//try width first
$ratio = $max_resolution / $original_width;
$new_width = $max_resolution;
$new_height = $original_height * $ratio;
if($new_height > $max_resolution) {
$ratio = $max_resolution / $original_height;
$new_height = $max_resolution;
$new_width = $orignial_width * ratio;
}
if($original_image){
$new_image = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($new_image,$original_image,0,0,0,0,$new_width,$new_height,$original_width,$original_height);
imagejpeg($new_image, $file, 90);
}
}
}
if(isset($_FILES['image']) && $_FILES['image']['type'] == 'image/jpeg'){
move_uploaded_file($_FILES['image']['tmp_name'],$_FILES['image']['name']);
$file = $_FILES['image']['name'];
resize_image($file, "500");
echo "<img src='$file'/>";
}
?>
<form method="post" enctype='multipart/form-data'>
<input type="file" name="image"><br/>
<input type="submit" value="post">
</form>