【问题标题】:Uploading DOM image with Ajax - Convert Image to File?使用 Ajax 上传 DOM 图像 - 将图像转换为文件?
【发布时间】:2012-12-19 06:24:28
【问题描述】:

我需要上传图片。在上传图像之前,我从文件输入中获取它,使用画布调整它的大小,然后将结果保存为 DOM 中的图像元素。 如何将我的 Image 对象转换为文件对象,以便我可以使用 ajax 上传它?

编辑:

这就是我所做的:

$.fitIn = function( size, bbox ) {

    var r = size.w / size.h;

    if( r > bbox.w / bbox.h ) {
        var newW = bbox.w,
            newH = newW / r;

    } else {
        var newH = bbox.h,
            newW = newH * r;
    }

    return { w: newW, h: newH };
};

$.resizeImage = function( image, newW, newH, outputFormat ) {

    if( null == outputFormat ) {
        var temp = image.src.split( '.' );
        outputFormat = temp[temp.length - 1];
    }

    var canvas = document.createElement( 'canvas' );
    canvas.width = newW;
    canvas.height = newH;

    var context = canvas.getContext( '2d' );
    context.drawImage( image, 0, 0, newW, newH );

    var newImage = document.createElement( 'img' );
    newImage.src = canvas.toDataURL( 'image/' + outputFormat );

    return newImage;
};

$.createThumb = function( image ) {

    var newSize = $.fitIn(
        { w: image.width, h: image.height },
        { w: THUMB_W, h: THUMB_H }
    );

    return $.resizeImage( image, newSize.w, newSize.h, THUMB_FORMAT );
};

然后:

var originalImage = document.getElementById('testImage');
var newImage = lwf.resizeImage(originalImage, 480, 270);

($ 不是 jquery)

感谢您的帮助:)

【问题讨论】:

  • 告诉我们你做了什么?
  • 用代码编辑了我的帖子我的帖子:)

标签: javascript ajax image file upload


【解决方案1】:

如果有的话,您可以使用 canvas.toDataURL() 来获取 base64 编码的字符串。将其发送到服务器,对其进行解码并保存为文件。

【讨论】:

  • 感谢您的回答。将图像保存为字符串是一种清晰的方法吗?
  • 获取canvas图像并通过AJAX发送到服务器的唯一方法。在服务器上,您只需要对其进行解码并保存即可。
  • canvas.toDataURL() 会给你一个以“data:image/png;base64,ABC123...”开头的字符串。例如,在 PHP 中,如果您使用正则表达式或 strtok 或其他任何方式提取“ABC123...”部分,则只需执行 file_put_contents("$path.png", base64_decode("ABC123...")); 并且图像是普通的 png 文件
  • 好的,谢谢!我发现这个教程是关于你刚才说的(simeonvisser.hubpages.com/hub/…),我会看看它。
猜你喜欢
  • 1970-01-01
  • 2021-09-05
  • 2011-08-31
  • 2023-03-23
  • 2020-03-06
  • 2021-01-03
  • 2013-10-20
  • 2023-04-01
  • 1970-01-01
相关资源
最近更新 更多