上传时压缩图像大小-PHP
我正在将截图上传到我的网站。 我想上传具有相同宽度和高度属性的原始图像,但我只想减小其大小,例如,如果上载前的图像大小为3 MB,则上载/保存后的图像大小必须为300 KB,但在我的情况下,生成的图像没有显示完全空白的图像 下面是我用来上传文件的代码上传时压缩图像大小-PHP,php,image,Php,Image,我正在将截图上传到我的网站。 我想上传具有相同宽度和高度属性的原始图像,但我只想减小其大小,例如,如果上载前的图像大小为3 MB,则上载/保存后的图像大小必须为300 KB,但在我的情况下,生成的图像没有显示完全空白的图像 下面是我用来上传文件的代码 <form action="" method="post" enctype="multipart/form-data" id="something" class="uniForm"> <input name="new_im
<form action="" method="post" enctype="multipart/form-data" id="something" class="uniForm">
<input name="new_image" id="new_image" size="30" type="file" class="fileUpload" />
<button name="submit" type="submit" class="submitButton">Upload/Resize Image</button>
<?php
if(isset($_POST['submit'])){
if (isset ($_FILES['new_image'])){
$imagename = $_FILES['new_image']['name'];
$source = $_FILES['new_image']['tmp_name'];
$target = "images/".$imagename;
move_uploaded_file($source, $target);
$imagepath = $imagename;
$save = "images/" . $imagepath; //This is the new file you saving
$file = "images/" . $imagepath; //This is the original file
list($width, $height) = getimagesize($file) ;
$tn = imagecreatetruecolor($width, $height) ;
$image = imagecreatefromjpeg($file) ;
imagecopyresampled($tn, $image, 0, 0, 0, 0, $width, $height, $width, $height) ;
imagejpeg($tn, $save, 70) ;
$save = "images/sml_" . $imagepath; //This is the new file you saving
$file = "images/" . $imagepath; //This is the original file
list($width, $height) = getimagesize($file) ;
$modwidth = 130;
$diff = $width / $modwidth;
$modheight = 185;
$tn = imagecreatetruecolor($modwidth, $modheight) ;
$image = imagecreatefromjpeg($file) ;
imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ;
imagejpeg($tn, $save, 70) ;
echo "Large image: <img src='images/".$imagepath."'><br>";
echo "Thumbnail: <img src='images/sml_".$imagepath."'>";
}
} ?>
上载/调整图像大小
如果我上传jpg图像/但不为其他人工作,则工作正常
我想对每种图像类型都使用它
//This may not be the answer
//in php we have different functions for different image formats so this may helps you
imagecreatefromjpeg ( string $filename )
imagecreatefrompng ( string $filename )
imagecreatefromgif ( string $filename )
对于类型检测,请使用以下代码和说明
<?php
function imageCreateFromAny($filepath) {
$type = exif_imagetype($filepath); // [] if you don't have exif you could use getImageSize()
$allowedTypes = array(
1, // [] gif
2, // [] jpg
3, // [] png
6 // [] bmp
);
if (!in_array($type, $allowedTypes)) {
return false;
}
switch ($type) {
case 1 :
$im = imageCreateFromGif($filepath);
break;
case 2 :
$im = imageCreateFromJpeg($filepath);
break;
case 3 :
$im = imageCreateFromPng($filepath);
break;
case 6 :
$im = imageCreateFromBmp($filepath);
break;
}
return $im;
}
?>
谢谢兄弟,我知道他们我已经用过1了,我真的不知道如果源代码是png或其他,如何用它来检测类型,以便我们可以相应地查询