在php中上传动态创建的图像

时间:2015-07-29 06:55:16

标签: php

  

要实现:调整上传图像的大小并保存到文件系统

- 假设正在上传1600x1024图像,所需尺寸为500x300。因此,我遇到的解决方案是在上传时调整图像大小。代码段如下:

<?php 

if(isset($_FILES['image'])){
    //print_r($_FILES); die;

    $file = $_FILES['image'];

    //print_r($file); die;

    $filename = rand().time().'.'.end(explode('.', $file['name']));

    //echo $filename; die;

    if(move_uploaded_file('"image.php?filename='.$file['tmp_name'].'"', 'uploads/'.$filename)){
        echo 'Uploaded '.$filename.' !';
    }else{
        echo 'Not Uploaded';
    }
}

?>

<form method="POST" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>">
    <input type="file" name="image">
    <input type="submit" value="Upload"/>
</form>

image.php

<?php
    // Filename
    $filename = $_GET['filename'];

    // Get new dimensions
    list($width, $height) = getimagesize($filename);

    $new_width = 500;
    $new_height = 200;

    // Resample
    $image_p = imagecreatetruecolor($new_width, $new_height);
    $image = imagecreatefromjpeg($filename);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

    // Content type
    header('Content-Type: image/jpeg');

    // Output
    imagejpeg($image_p, null, 100);
?>
  

问题是:如何在php创建的图片中使用move_uploaded_files,标​​题为 Content-Type:image / jpeg

谢谢&amp;此致

3 个答案:

答案 0 :(得分:0)

您需要使用以下功能之一保存图像:imagejpegimagepngimagegif等。如果您将第二个参数设置为null,原始图像流将直接输出。您需要在那里指定图像路径。

imagejpeg($image_p, 'new-image.jpg', 100);

如果要自动检测图像类型,可以使用pathinfo提取图像类型。

答案 1 :(得分:0)

您可以在已使用image.php的相同功能或其他文件上使用。 我在同一个函数上添加了一些代码,正在为我工​​作,请检查一下。

if(isset($_FILES['image']))
{
    //print_r($_FILES); die;

    $file = $_FILES['image'];

    //print_r($file); die;

    $filename = rand().time().'.'.end(explode('.', $file['name']));

    //echo $filename; die;

    if(move_uploaded_file('"image.php?filename='.$file['tmp_name'].'"', 'uploads/'.$filename)){
        echo 'Uploaded '.$filename.' !';

        //once your file is uploaded you converting on same image

          $filenameNew = $_GET['filename'];

        // Get new dimensions
        list($width, $height) = getimagesize($filename);

        $new_width = 500;
        $new_height = 200;

        // Resample
        $image_p = imagecreatetruecolor($new_width, $new_height);
        $image = imagecreatefromjpeg($filename);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

        // Content type
        header('Content-Type: image/jpeg');

        //store path
        $imageName=rand().time()."test.jpg";
        $imagestore="uploads/".$imageName;

        // Output
        imagejpeg($image_p,$imagestore,100);

    }else{
        echo 'Not Uploaded';
    }

}

答案 2 :(得分:0)

改变
if(move_uploaded_file('"image.php?filename='.$file['tmp_name'].'"', 'uploads/'.$filename)){
    echo 'Uploaded '.$filename.' !';
}else{
    echo 'Not Uploaded';
}

$resized_file = "image.php?filename=".$file['tmp_name'];
$resized_file = file_get_contents($resized_file);

if(file_put_contents('uploads/'.$filename, $resized_file))
{
    echo 'Uploaded '.$filename.' !';
}
else
{
    echo 'Not Uploaded';
}