如何在运行时预览图像?我有上传脚本和重新调整大小的功能。但图像并没有在运行时显示。我不想救艾姆奇。只需调整大小并在运行时显示即可。图像必须从内存中显示,而不是从目录中显示。我正在尝试这样的东西:
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>';
如果您手头有包含图像的二进制数据,您可以使用数据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;
$_FILES['myfile']['name']
包含文件名,而不是位置,请使用
$_FILES['myfile']['tmpname']
相反。要调整大小,请阅读关于imagecopy的重新采样PHP函数-有很多关于PHP图像调整大小的教程。要输出图像,请使用imagejpeg或imagepng函数-此函数将把您的图像输出到浏览器。不要忘记正确的标题,例如
header('Content-type: image/jpeg');