将剪贴板图像粘贴到画布

时间:2011-07-24 16:06:25

标签: javascript canvas clipboard

我有一个画布,我需要用户能够粘贴图像。 我希望这是跨浏览器。我只想使用html / javascript。我也愿意使用flash对象。

2 个答案:

答案 0 :(得分:4)

这在Chrome中运行良好,但到目前为止我还没弄清楚如何让它在Firefox中运行。您可以使用此jQuery插件来检测剪贴板粘贴。一旦你从剪贴板获得数据,我会假设你知道如何绘制图像。

# jquery.paste_image_reader.coffee
(($) ->
  $.event.fix = ((originalFix) ->
    (event) ->
      event = originalFix.apply(this, arguments)

      if event.type.indexOf('copy') == 0 || event.type.indexOf('paste') == 0
        event.clipboardData = event.originalEvent.clipboardData

      return event

  )($.event.fix)

  defaults =
    callback: $.noop
    matchType: /image.*/

  $.fn.pasteImageReader = (options) ->
    if typeof options == "function"
      options =
        callback: options

    options = $.extend({}, defaults, options)

    this.each () ->
      element = this
      $this = $(this)

      $this.bind 'paste', (event) ->
        found = false
        clipboardData = event.clipboardData

        Array::forEach.call clipboardData.types, (type, i) ->
          return if found
          return unless type.match(options.matchType)

          file = clipboardData.items[i].getAsFile()

          reader = new FileReader()

          reader.onload = (evt) ->
            options.callback.call(element, file, evt)

          reader.readAsDataURL(file)

          found = true

)(jQuery)

使用:

$("html").pasteImageReader
  callback: (file, event) ->
    # Draw the image with the data from
    # event.target.result

答案 1 :(得分:0)

据我所知,使用JavaScript和HTML无法做到这一点。但是,this blog post描述了使用Java小程序实现此目的