2

Gmail内では、貼り付けオプションを使用して、Windowsクリップボードから直接画像を貼り付けることができます。私の明白な質問は、これを行う方法です。

フラッシュコードを使用してテキストをコピーする手法を見つけましたが、これは私が探しているものではありません。アイデアは、ウィンドウ内の画像またはテキストをコピーして、チェックされたシステムからの単純なテキストエディタ内に貼り付けることです。

データがテキストであり、タグ内にあるかどうかを確認し、画像である場合はタグ内にある必要があるため、完全に自動で動作する必要があります<img>。このような<img src="rawimagedata" title="filename.jpg" />

誰かがヒントまたはより良いスクリプトの例。あなたがフラッシュまたはジャバを使用するかどうかに関係なく、それが機能する場合、それは私のために機能します。

前もって感謝します。

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 に答える