0

我正在尝试使用 Ajax 上传/调整图像大小,然后将其显示在浏览器中,而不是将其保存到文件中。我期待有一个图像,而不是我得到了一堆乱码。

可行吗?或者我不能也需要求助于其他东西,比如保存到文件然后走它的路径?或者也许使用画布?

谢谢你的时间。

HTML

<form enctype="multipart/form-data" action="file.php" method="Post" id="form">
  <input type="file" name="user_image">
  <input type="submit" value="Submit" name="submit">
</form>
<div id="blah"></div>

Javascript

//using jquery-form.js
$('#form').on('submit', function(e) {
  e.preventDefault();
  $(this).ajaxSubmit({
    target: '#blah',
    success:  function(){}
  });
});

PHP

$img_width = imagesx($this->image);
$img_height = imagesy($this->image);
$image = imagecreatefromjpeg($_FILE['user_image']['tmp_name']);
$resized_image = imagecreatetruecolor(300, 300);
imagecopyresampled($resized_image, $image, 0, 0, 0, 0, 300, 300, $img_width, $img_height);
header('Content-Type:image/jpeg');
imagejpeg($resized_image);
4

2 回答 2

4

在您的 PHP 中执行此操作

ob_start();
// header("Content-type: image/jpeg"); // fairly sure you won't need this
imagejpeg($resized_image);
echo base64_encode(ob_get_clean());
die;

假设你有 HTML

<img id="theimage" />

然后在 JS

success:  function(data){
    $('#theimage').attr('src', 'data:image/jpeg;base64,' + data);
}
于 2012-12-25T15:21:46.497 回答
0

您正在尝试使用 ajax 获取原始 jpeg 数据。您不应执行 ajax 上传,而是直接发送表单以查看调整大小的图像。如果这不是您想要的,那么您需要将原始 jpeg 数据编码为 base64 编码的数据 url,并将其作为元素的src属性插入。<img>

于 2012-12-25T15:30:50.843 回答