实际上,我想要的是,当我上传1张图片时,原始图片将存储在upload / og /中.但我也想要不同尺寸的图像,如1366×768,1280 * 600,768×1024等…不仅仅是这些尺寸,它将与图像成比例.
我有一个代码,它将该图像转换为拇指与比率,这适用于max-width = 300和max-height = 600.
define ("MAX_SIZE","100");
define ("WIDTH","300");
define ("HEIGHT","600");
function make_thumb($img_name,$filename,$new_w,$new_h)
{
$ext=getExtension($img_name);
if(!strcmp("jpg",$ext) || !strcmp("jpeg",$ext))
$src_img=imagecreatefromjpeg($img_name);
if(!strcmp("png",$ext))
$src_img=imagecreatefrompng($img_name);
//gets the dimmensions of the image
$old_x=imageSX($src_img);
$old_y=imageSY($src_img);
// next we will calculate the new dimmensions for the thumbnail image
$ratio1=$old_x/$new_w;
$ratio2=$old_y/$new_h;
if($ratio1>$ratio2) {
$thumb_w=$new_w;
$thumb_h=$old_y/$ratio1;
}
else {
$thumb_h=$new_h;
$thumb_w=$old_x/$ratio2;
}
$dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
imagecopyresampled($dst_img,$src_img,$thumb_w,$thumb_h,$old_x,$old_y); // resize the big image to the new created one
if(!strcmp("png",$ext)) // output the created image to the file. Now we will have the thumbnail into the file named by $filename
imagepng($dst_img,$filename);
else
imagejpeg($dst_img,$filename);
imagedestroy($dst_img);
imagedestroy($src_img);
}
function getExtension($str) {
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}
$errors=0;
if(isset($_POST['submit']))
{
//reads the name of the file the user submitted for uploading
$image=$_FILES['scrnsots']['name'];
if ($image)
{
$filename = stripslashes($_FILES['scrnsots']['name']);
// get the extension of the file in a lower case format
$extension = getExtension($filename);
$extension = strtolower($extension);
// if it is not a kNown extension,we will suppose it is an error,print an error message
//and will not upload the file,otherwise we continue
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png"))
{
echo 'Nown extension!
timagesize($_FILES['scrnsots']['tmp_name']);
$sizekb=filesize($_FILES['scrnsots']['tmp_name']);
if ($sizekb > MAX_SIZE*102400)
{
echo 'copied = copy($_FILES['scrnsots']['tmp_name'],$newname);
if (!$copied)
{
echo 'copy unsuccessfull!
dismiss='alert' aria-label='close'>×
但它只会创建拇指.我想要1个不同的图像 – 尺寸(高度 – 宽度).
最佳答案
如评论所述,您实际上只需将最后一部分(函数)放在循环中,并使用mkdir()添加一些目录创建逻辑.还有一个本机函数来提取名为pathinfo()的扩展,所以只使用那个而不是你拥有的那个:
function make_thumb($img_name,$new_h)
{
$ext=getExtension($img_name);
if(!strcmp("jpg",$ext))
$src_img=imagecreatefromjpeg($img_name);
if(!strcmp("png",$ext))
$src_img=imagecreatefrompng($img_name);
$old_x=imageSX($src_img);
$old_y=imageSY($src_img);
$ratio1=$old_x/$new_w;
$ratio2=$old_y/$new_h;
if($ratio1>$ratio2) {
$thumb_w=$new_w;
$thumb_h=$old_y/$ratio1;
}
else {
$thumb_h=$new_h;
$thumb_w=$old_x/$ratio2;
}
$dst_img = ImageCreateTrueColor($thumb_w,$thumb_h);
imagecopyresampled($dst_img,$old_y); // resize the big image to the new created one
if(!strcmp("png",$ext)) // output the created image to the file. Now we will have the thumbnail into the file named by $filename
imagepng($dst_img,$filename);
else
imagejpeg($dst_img,$filename);
imagedestroy($dst_img);
imagedestroy($src_img);
}
if(!empty($_FILES)) {
$errors=0;
if($_POST['submit']) {
if($_FILES['scrnsots']['error'] == 0) {
$image = $_FILES['scrnsots']['name'];
$filename = stripslashes($_FILES['scrnsots']['name']);
$extension = pathinfo($filename,PATHINFO_EXTENSION);
$extension = strtolower($extension);
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png")) {
echo 'Nown extension!
timagesize($_FILES['scrnsots']['tmp_name']);
$sizekb = filesize($_FILES['scrnsots']['tmp_name']);
if ($sizekb > MAX_SIZE*102400) {
echo 'copy()
if (!move_uploaded_file($_FILES['scrnsots']['tmp_name'],$newname)) {
echo 'copy unsuccessfull!
原文地址:https://www.jb51.cc/html/425550.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。