简体   繁体   English

使用PHP调整大小,重命名和上传图像

[英]Resize, rename and upload image with PHP

I would like to resize, rename and upload an image with PHP. 我想使用PHP调整大小,重命名并上传图像。

So my working script is the following: 所以我的工作脚本如下:

$file_name = $_FILES['HOT_Logo']['name'];
$file_tmp_name = $_FILES['HOT_Logo']['tmp_name'];
$file_target = '../../images/hotel-logos/';
$file_size = $_FILES['HOT_Logo']['size'];

// Resize
$ratio = $width/$height;
if($ratio > 1) {
    $new_width = 300;
    $new_height = 300/$ratio;
}
else {
    $new_width = 300*$ratio;
    $new_height = 300;
}

$src = imagecreatefromstring(file_get_contents($file_tmp_name));
$dst = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagedestroy($src);
imagepng($dst, $file_target.$file_name);
imagedestroy($dst);

// Rename file
$temp = explode('.', $_FILES['HOT_Logo']['name']);
$newfilename = 'new_img_name.'.end($temp);

// Upload image
if(move_uploaded_file($_FILES['HOT_Logo']['tmp_name'], $file_target.$newfilename)) {
    ...
}

Problem with this script is it upload two image: 这个脚本的问题是它上传了两个图像:

  • The renamed image but unresized. 重命名的图像但未调整大小。
  • The non renamed image but resized. 未重命名的图像,但已调整大小。

Why ? 为什么呢

You are creating a image, then moving the uploaded file, which is why it's creating two files. 您正在创建图像,然后移动上载的文件,这就是为什么要创建两个文件的原因。 I believe your code is supposed to be: 我相信您的代码应该是:

$file_name = $_FILES['HOT_Logo']['name'];
$file_tmp_name = $_FILES['HOT_Logo']['tmp_name'];
$file_target = '../../images/hotel-logos/';
$file_size = $_FILES['HOT_Logo']['size'];

// Resize
$ratio = $width/$height;
if($ratio > 1) {
    $new_width = 300;
    $new_height = 300/$ratio;
}
else {
    $new_width = 300*$ratio;
    $new_height = 300;
}

// Rename file
$temp = explode('.', $file_name);
$newfilename = 'new_img_name.'.end($temp);

// Upload image
if(move_uploaded_file($file_tmp_name , $file_target.$newfilename)) {
    $src = imagecreatefromstring(file_get_contents($file_target.$newfilename));
    $dst = imagecreatetruecolor($new_width, $new_height);
    imagecopyresampled($dst, $src, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    imagedestroy($src);
    imagepng($dst, $file_target.$newfilename);
    imagedestroy($dst);

    ....
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM