Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将上传的图像保存到一个目录,并将调整大小的副本保存到一个单独的目录_Php_Image_Resize - Fatal编程技术网

Php 将上传的图像保存到一个目录,并将调整大小的副本保存到一个单独的目录

Php 将上传的图像保存到一个目录,并将调整大小的副本保存到一个单独的目录,php,image,resize,Php,Image,Resize,我已经为此工作了好几个小时了。我希望原始图像存储到目录“大”和大小的图像存储到“上传”,但大不会存储。调整大小后的图像存储效果良好。我做错了什么?我已经尝试了十几种不同的方法,这就是我放弃的地方。我发现这个php类非常有用: 举个小例子: <?php $images = $_FILES["userfile"]["tmp_name"]; $new_images = "small_".$_FILES["userfile"]["name"]; $target = "

我已经为此工作了好几个小时了。我希望原始图像存储到目录“大”和大小的图像存储到“上传”,但大不会存储。调整大小后的图像存储效果良好。我做错了什么?我已经尝试了十几种不同的方法,这就是我放弃的地方。

我发现这个php类非常有用:

举个小例子:

<?php


    $images = $_FILES["userfile"]["tmp_name"];
    $new_images = "small_".$_FILES["userfile"]["name"];
    $target = "large/".$new_images;

    $width=314; //*** Fix Width & Heigh (Autu caculate) ***//
    $size=GetimageSize($images);
    $height=round($width*$size[1]/$size[0]);
    $images_orig = ImageCreateFromJPEG($images);
    $photoX = ImagesX($images_orig);
    $photoY = ImagesY($images_orig);
    $images_fin = ImageCreateTrueColor($width, $height);
    ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, 

 $height+1, $photoX, $photoY);
    ImageJPEG($images_fin,"uploads/".$new_images);
    ImageJPEG($images_orig,"large/".$new_images);
    ImageDestroy($images_orig);
    ImageDestroy($images_fin);


 ?>

希望有帮助

所以我知道这很古老,但这是我用你的代码给出的答案。。。如果先将原始文件移动到目录中。您可以使用该文件重新调整大小,然后将其存储到您想要的位置

$year、$renamefiledash和$changesSecond变量来自我自己的表单。你可以随意命名这个文件

include("path/to/your/class/folder/resize_class.php"); 
$resizeObj = new resize('path/to/your/images/folder/name_of_image_recently_uploaded.jpg');
$resizeObj -> resizeImage(150, 100, 0);
$resizeObj -> saveImage('path/to/your/images/thumb/folder/name_of_image_recently_uploaded.jpg', 100);

你有什么错误吗?你不应该在原稿上做imagejpeg。这样会重新压缩它,从而失去质量。您应该改为使用
move\u uploaded\u file()
,这样才能保存真正的原始文件。@很好,我尝试的任何尝试都没有收到任何错误。它们只是没有存储到目录中。@MarcB我也尝试过使用move_uploaded_file(),但没有成功。所以我的代码是:
move_上传的文件($_文件[“userfile”][“tmp_name”],“large/”$_文件[“file”][“name”])这将是一个可怕的安全漏洞<代码>['name']
可以包含路径信息,该代码将允许恶意用户在服务器上任意位置涂鸦文件。
move_uploaded_file($_FILES["file"]["tmp_name"],
  $_SERVER['DOCUMENT_ROOT'].'/downloads/media/'.$year.'/'.$renameFileDash.'.'.$changeSecond);


$images = $_SERVER['DOCUMENT_ROOT'].'/downloads/media/'.$year.'/'.$renameFileDash.'.'.$changeSecond;

$width=618; //*** Fix Width & Heigh (Autu caculate) ***//
$size=GetimageSize($images);
$height=round($width*$size[1]/$size[0]);
$images_orig = ImageCreateFromJPEG($images);
$photoX = ImagesX($images_orig);
$photoY = ImagesY($images_orig);
$images_fin = ImageCreateTrueColor($width, $height);
ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, 
$height+1, $photoX, $photoY);
ImageJPEG($images_fin,$_SERVER['DOCUMENT_ROOT'].'/images/media-archive/media-thumbs/'.$renameFileDash.'.'.$changeSecond);
ImageDestroy($images_orig);
ImageDestroy($images_fin);