要实现:调整上传图像的大小并保存到文件系统
- 假设正在上传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;此致
答案 0 :(得分:0)
您需要使用以下功能之一保存图像:imagejpeg,imagepng,imagegif等。如果您将第二个参数设置为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';
}