1. ホーム
  2. javascript

[解決済み] JavaScriptスポイト(マウスカーソル下のピクセルの色を伝える)

2023-07-02 11:13:28

質問

を探しています。 スポイト ツールは、CMS 用の JavaScript で、マウス カーソルがあるピクセルの 16 進値を私に提供します。

Firefox では、優れた カラージラ という拡張機能があり、まさにそれを実現しています。ただ、もちろんFFのみなので、ぜひCMSと一緒にツールを提供したいですね。

あるオランダの開発者が 非常に賢い考えです。 Ajax と PHP の組み合わせによる imagecolorat() を使用して、画像上のピクセルカラーを見つけることができます。 しかし、それは私がサーバサイドにアクセスできる画像に範囲を制限します。 そして、私は本当に普遍的なツールを夢見ているのです。

私はこれらのアプローチのうちの 1 つで作業しますが、クロスブラウザ、Javascript または Flash ベースの方法で、サーバー側をいじったり拡張機能をインストールしたりする必要がないものを希望しています。

私はまた、ColorZilla ができることを行う IE 固有のソリューションに興味があります - IE と FF のみをサポートすることに耐えることができますが、もちろんクロス ブラウザ ソリューションが理想的です。

どのように解決するのですか?

JavaScriptではクロスドメインセキュリティに反するので無理です。画像を構成するピクセルを知ってしまうと非常にまずいことになります。 http://some-other-host/yourPassword.png . マウスがキャンバスの上にあるか、同じドメインの画像要素(あるいは Access-Control-Allow-Origin: * ヘッダで提供される別のドメインの画像要素) の上にある場合に、マウスの下のピクセルの色を指定します。canvas の場合、次のようになります。 canvasElement.getContext('2d').getImageData(x, y, 1, 1).data . 画像の場合は、でキャンバスに描画することになります。

var canvas = document.createElement("canvas");
canvas.width = yourImageElement.width;
canvas.height = yourImageElement.height;
canvas.getContext('2d').drawImage(yourImageElement, 0, 0);

あとは、キャンバスについて説明した前の方法を使うだけです。もし、色値を様々な表現に変換できるようにしたい場合は、私の color.js ライブラリを試してみてください。

また、IE <9 には絶対に対応できませんし(IE9 が canvas に対応していることが前提です)、Flash を使用してもドキュメントのピクセルデータを読み取ることができないので、役に立ちません。