2

このスクリプトを使用して 1 年間、自分の Web サイトに写真をアップロードしてきましたが、最終的に変更が必要であることに気付きました。私はインターネット全体を見てきましたが、まだ適切な解決策を見つけていないので、あなたに来ました。

  • このスクリプトは現在、プロパティ 111x111 でサム イメージを作成し、フォルダ '/images' に移動しています。
  • 元の画像もアップロードしたいのですが、どうすればいいですか?

    if(isset($_POST['submit'])) {
    if (($_FILES["image"]["type"] == "image/jpeg" || $_FILES["image"]["type"] == "image/pjpeg" || $_FILES["image"]["type"] == "image/gif" || $_FILES["image"]["type"] == "image/x-png") && ($_FILES["image"]["size"] < 4000000))
    $current_img=$_FILES['image']['name'];
    $extension = substr(strrchr($current_img, '.'), 1);
    date_default_timezone_set("Europe/Stockholm");
    $time = date("fYhis");
    $new_image = uniqid() . $time;
    $destination   = "images/".$new_image . "-thumb" . "." . $extension;
    $action = move_uploaded_file($_FILES['image']['tmp_name'], $destination);
    
    $max_upload_width = 111;
    $max_upload_height = 111;
    if($_FILES["image"]["type"] == "image/jpeg" || $_FILES["image"]["type"] == "image/pjpeg"){
        $image_source = imagecreatefromjpeg($destination) ;
    } 
    if($_FILES["image"]["type"] == "image/gif"){    
        $image_source = imagecreatefromgif($_FILES["image"]["tmp_name"]);
    }
    if($_FILES["image"]["type"] == "image/bmp"){    
        $image_source = imagecreatefromwbmp($_FILES["image"]["tmp_name"]);
    }
    if($_FILES["image"]["type"] == "image/x-png"){
        $image_source = imagecreatefrompng($_FILES["image"]["tmp_name"]);
    }
    
    imagejpeg($image_source,$destination,100);
    chmod($destination,0644);
    
    list($image_width, $image_height) = getimagesize($destination);
    
    if($image_width>$max_upload_width || $image_height >$max_upload_height){
        $proportions = 1;
    
        if($image_width>$image_height){
            $new_width  = $max_upload_width;
            $new_height = round($max_upload_width/$proportions);
        }       
        else{
            $new_height = $max_upload_height;
            $new_width  = round($max_upload_height*$proportions);
        }       
    
    
        $new_image = imagecreatetruecolor($new_width , $new_height);
        $image_source = imagecreatefromjpeg($destination);
    
        imagecopyresampled($new_image, $image_source, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height);
        imagejpeg($new_image, $destination, 100); // save
        imagedestroy($new_image);
    }
    
4

1 に答える 1

0

次のコードを使用して、ファイルを別のディレクトリにアップロードするだけです

$originalImage  = "images/".$new_image . "-ImageName" . "." . $extension;

$action = move_uploaded_file($_FILES['image']['tmp_name'], $originalImage)

;

また、サムネイルの作成には、$ _ FILES['image']['tmp_name']の代わりに$originalImageを使用します。

次のコードを適用して確認してください

if(isset($_POST['submit'])) {
if (($_FILES["image"]["type"] == "image/jpeg" || $_FILES["image"]["type"] == "image/pjpeg" || $_FILES["image"]["type"] == "image/gif" || $_FILES["image"]["type"] == "image/x-png") && ($_FILES["image"]["size"] < 4000000))
$current_img=$_FILES['image']['name'];
$extension = substr(strrchr($current_img, '.'), 1);
date_default_timezone_set("Europe/Stockholm");
$time = date("fYhis");
$new_image = uniqid() . $time;

$originalImage  = "images/".$new_image . "-ImageName" . "." . $extension;
$destination   = "images/".$new_image . "-thumb" . "." . $extension;

$action = move_uploaded_file($_FILES['image']['tmp_name'], $originalImage);

$max_upload_width = 111;
$max_upload_height = 111;
if($_FILES["image"]["type"] == "image/jpeg" || $_FILES["image"]["type"] == "image/pjpeg"){
    $image_source = imagecreatefromjpeg($originalImage) ;
} 
if($_FILES["image"]["type"] == "image/gif"){    
    $image_source = imagecreatefromgif($originalImage);
}
if($_FILES["image"]["type"] == "image/bmp"){    
    $image_source = imagecreatefromwbmp($originalImage);
}
if($_FILES["image"]["type"] == "image/x-png"){
    $image_source = imagecreatefrompng($originalImage);
}

imagejpeg($image_source,$destination,100);
chmod($destination,0644);

list($image_width, $image_height) = getimagesize($destination);

if($image_width>$max_upload_width || $image_height >$max_upload_height){
    $proportions = 1;

    if($image_width>$image_height){
        $new_width  = $max_upload_width;
        $new_height = round($max_upload_width/$proportions);
    }       
    else{
        $new_height = $max_upload_height;
        $new_width  = round($max_upload_height*$proportions);
    }       


    $new_image = imagecreatetruecolor($new_width , $new_height);
    $image_source = imagecreatefromjpeg($destination);

    imagecopyresampled($new_image, $image_source, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height);
    imagejpeg($new_image, $destination, 100); // save
    imagedestroy($new_image);
}
于 2012-08-18T14:11:26.163 に答える