【问题标题】:Saving DataURL to jpg将 DataURL 保存为 jpg
【发布时间】:2014-10-03 14:56:45
【问题描述】:

我有以下代码将图像文件(jpg/png)转换为数据 url。裁剪完成后,我可以生成渲染图像,但它保存为 png。我需要能够将数据 url 保存为 jpg。

renderButton.click(function (event) {
var dataUrl;

imgly.renderToDataURL("png", { size: "1280" }, function (err, dataUrl) {

var image = $("<img><br>").attr({
    src: dataUrl
  });

  image.appendTo($(".result"))
  $button = $('<button class="btn btn-default remove">')
        .text('Remove')
        .on('click', function () {
            image.remove();
            $(this).remove();
            return false;
        });
    $button.appendTo($(".result"));;

    });
});

在 renderToDataURL 行中将 "png" 更改为 "jpg" 没有任何影响。有什么想法吗?

【问题讨论】:

    标签: javascript jquery data-url


    【解决方案1】:

    把你的电话改成

    imgly.renderToDataURL("image/jpeg", { size: "1280" }, function (err, dataUrl)
    

    如何阅读源代码

    renderToDataURL: (format, options={}, callback) ->
        if typeof options is "function"
          callback = options
          options = {}
    
    @photoProcessor.renderImage options, (err, imageData) =>
          canvas = Utils.newCanvasFromImageData imageData
          callback null, canvas.toDataURL(format)
    

    其中format是图片格式,canvas.toDataURL(format)负责数据翻译

    问题在于 MIME 类型,如何读取 the spec

    当使用一个或多个参数调用 toDataURL(type) 方法时, 它必须返回一个数据:包含图像表示的 URL 类型给出的格式。可能的值是 MIME 类型,没有 参数,例如 image/png、image/jpeg,甚至可能 image/svg+xml 如果实现确实保留了足够的信息 可靠地从画布渲染 SVG 图像。

    编辑

    renderButton.click(function (event) {
    var dataUrl;
    
    imgly.renderToDataURL("image/jpeg", { size: "1280" }, function (err, dataUrl) {
    
    var image = $("<img><br>").attr({
        src: dataUrl
      });
    
      image.appendTo($(".result"))
      $button = $('<button class="btn btn-default remove">')
            .text('Remove')
            .on('click', function () {
                image.remove();
                $(this).remove();
                return false;
            });
        $button.appendTo($(".result"));;
    
        });
    });
    

    这应该可以工作

    【讨论】:

    • 正如我在代码下方所述,进行该更改没有任何影响。
    • 那我要不要用你的代码替换我的imgly.renderToDataURL("image/jpeg", { size: "1280" }, function (err, dataUrl)行?
    • @Matt 您应该将“image/jpeg”而不是 jpg 作为第一个参数,因为“jpg”不是有效的 mime 类型
    • 也许我在这里遗漏了一些东西。我已经用imgly.renderToDataURL(image/jpg, options={}, callback){ if(typeof options == 'function'){ callback = options options = {} } }; imgly.renderImage options, (err, imageData){ canvas = Utils.newCanvasFromImageData imageData callback null, canvas.toDataURL(format) }; 替换了我的代码,这不仅不起作用,而且还破坏了我的代码。
    • 谢谢@wintermute。有趣的是,我所缺少的只是"image/"
    猜你喜欢
    • 2014-09-10
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 2011-03-07
    • 2014-03-21
    • 1970-01-01
    相关资源
    最近更新 更多