在运行时php调整图像大小

时间:2012-02-29 08:01:47

标签: php javascript ajax

如何在运行时预览图像?我有上传器脚本和重新调整大小的功能。但是在运行时没有显示图像。我不想保存iamge.Just调整大小并在运行时显示。图像必须从内存中显示而不是从目录中显示。我正在尝试这样的事情:

    if ($_FILES['myfile']['error'] == 0)
    {  
     $theImageToResize=$_FILES['myfile']['name'];

     $afterResize=Resize($theImageToResize);

     echo $theImageToResize.'---->image after resize';
    }

[只是想从内存中显示图像。不是来自目录];

服务器端代码:

  $savefolder = 'images'; //upload dir  
  $max_size = 35000;    //in bytes  

  // image types
  $allowtype = array('bmp', 'gif', 'jpg', 'jpeg', 'gif', 'png');
  $res = '';
  // if is received a valid file
  if (isset ($_FILES['myfile'])) {


 $type = end(explode(".", strtolower($_FILES['myfile']['name'])));
 if (in_array($type, $allowtype)) {

if ($_FILES['myfile']['size']<=$max_size*1000) {

  if ($_FILES['myfile']['error'] == 0) {

    $thefile = $savefolder . "/" . $_FILES['myfile']['name'];

    $theImageToResize=$_FILES['myfile']['name'];


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

      $res = '<img src="'.$theImageToResize.'" />';


      }
    }
    else { $res = 'The file <b>'. $_FILES['myfile']['name']. '</b> exceeds max Size           <i>'. $max_size. 'KB</i>'; }
 }
                else { $res = 'The file <b>'. $_FILES['myfile']['name']. '</b> has not an allowed File Tyle..'; }
           }


          $res = urlencode($res);
         echo '<body onload="parent.doneloading(\''.$res.'\')"></body>';

2 个答案:

答案 0 :(得分:0)

如果您拥有包含手头图像的二进制数据,则可以使用a data URI来回显嵌入图像的<img>标记,如下所示:

$imageData = /* binary image data */
$mimeType = 'image/jpg'; // or image/gif or image/png, must be accurate
printf('<img src="data:%s;base64,%s" alt="resized image" />',
        $mimeType, base64_encode($imageData));

这允许您输出已调整大小的图像作为网页的一部分。如果要显示 图像,只需输出合适的标题然后回显二进制数据:

header('Content-type: image/jpg');
echo $imageData;
die;

答案 1 :(得分:0)

$_FILES['myfile']['name']

包含文件名,而不是位置,请使用

$_FILES['myfile']['tmpname'] 

代替。 调整大小读取有关imagecopyresampled PHP函数的大小 - 关于PHP图像大小调整的教程很多。要输出图像,请使用imagejpeg或imagepng函数 - 此函数会将图像输出到浏览器。不要忘记正确的标题,例如

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