2

在 gmail 中,您可以使用粘贴选项直接从 Windows 剪贴板粘贴图像。我的明显问题是:如何做到这一点。

我找到了使用 Flash 代码复制文本的技术,但这不是我想要的。这个想法是我在窗口中复制图像或文本,然后将其粘贴到勾选系统中的简单文本编辑器中。

它必须全自动工作,以便查看数据是否是文本并关闭在标签内,如果是图像,它必须在<img>标签内。像这样<img src="rawimagedata" title="filename.jpg" />

有人提示或更好的脚本示例。不管你是使用 flash 还是 java,它都对我有用。

先感谢您。

4

2 回答 2

0

你必须用Java对其进行编码

 byte[] byteArray = new byte[102400];
 base64String = Base64.encode(byteArray);

byteArray 是图片,使用 Base64.encode 函数,您可以获得必须在下面输入的字符串

更多信息见:https ://stackoverflow.com/a/10226133/1667829

然后你可以像这样展示它:

<div>
    <p>Taken from wikpedia</p>
    <img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
    9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />
</div>

http://jsfiddle.net/hpP45/

于 2013-02-21T15:55:50.070 回答
0

我找到了一种获取仅适用于 Google chrome 的图像的方法。我正忙于开发一个也适用于 Firefox 的版本。

以灵感形式:http ://strd6.com/2011/09/html5-javascript-pasting-image-data-in-chrome/

<!DOCTYPE html>
<html>
    <head>
        <title>test</title>
        <script src="jquery.js" type="text/javascript"></script>
        <script>
// Created by STRd6
// MIT License
// jquery.paste_image_reader.js
(function() {
  (function($) {
    var defaults;
    $.event.fix = (function(originalFix) {
      return function(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.*/
    };
    return $.fn.pasteImageReader = function(options) {
      if (typeof options === "function") {
        options = {
          callback: options
        };
      }
      options = $.extend({}, defaults, options);
      return this.each(function() {
        var $this, element;
        element = this;
        $this = $(this);
        return $this.bind('paste', function(event) {
          var clipboardData, found;
          found = false;
          clipboardData = event.clipboardData;
          return Array.prototype.forEach.call(clipboardData.types, function(type, i) {
            var file, reader;
            if (found) {
              return;
            }
            if (type.match(options.matchType) || clipboardData.items[i].type.match(options.matchType)) {
              file = clipboardData.items[i].getAsFile();
              reader = new FileReader();
              reader.onload = function(evt) {
                return options.callback.call(element, {
                  dataURL: evt.target.result,
                  event: evt,
                  file: file,
                  name: file.name
                });
              };
              reader.readAsDataURL(file);
              return found = true;
            }
          });
        });
      });
    };
  })(jQuery);
}).call(this);

jQuery("html").pasteImageReader(function(results) {
  var dataURL, filename;
  filename = results.filename, dataURL = results.dataURL;

  jQuery('#deze').html('<img src="' + dataURL + '" />');
});
</script>
        <style>
            #deze{
                height:400px;
                width:400px;
                border:2px solid red;
            }
        </style>
    </head>
    <body>
        <div id="deze">testdiv</div>

    </body>
</html>

笔记:

在这个例子中,创建者覆盖了 $ sing,你不能再像这样使用 jquery: $('#deze')

于 2013-02-22T09:34:12.147 回答