1. ホーム
  2. Web制作
  3. html5

画像にタイル状の透かしを追加するためのhtml5キャンバス

2022-01-29 23:35:09

最近、あるプロジェクトで、画像にタイル状の透かしを入れるという要件に出くわしました。

このような効果

というのも、私はそれまでcanvasを触ったことがなかったからです。ですから、この作業をするときは、一歩一歩、理解しながら学んでいくプロセスでした。それでも、この機能を実装するために一歩一歩私についてきて、canvasの落とし穴をいくつか発見するというのは、かなりいいプロセスだったと思います。

この機能は、canvasの基本的なapiが必要で、原理は関係ないので、jsのコードをここに掲載します。

var img = new Image();
// Because the business in my project is to add a watermark to Taobao images, so here's a Taobao product's main image
img.src = 'https://gd4.alicdn.com/imgextra/i3/155/O1CN01XKkJqL1D11wYZbeI2_! ! 155-0-lubanu.jpg_400x400.jpg';
img.onload = () => {
  // Prepare the canvas environment
  var canvas = document.getElementById("myCanvas");
  var ctx = canvas.getContext("2d");
  // Draw the image to the canvas first
  ctx.drawImage(img, 0, 0, 200, 200);
  // draw the watermark to the canvas
  for (let i = 0; i < 20; i++) {
 
  ctx.rotate((-45 * Math.PI) / 180); // initial watermark deflection angle
  ctx.font = "20px microsoft yahei";
  ctx.fillStyle = "rgba(0,0,0,0.5)";
  ctx.fillText("mmmmmmmmmmmmmmmmmmmmmmmmmmmm",-300,i * 25);
  ctx.rotate((45 * Math.PI) / 180); // adjust the watermark deflection angle to the original, otherwise he will keep turning
}

html

<canvas
  height="200"
  id="myCanvas"
  width="200"
>

お使いのブラウザはウォーターマークをサポートしていません。Google Chromeで開いてください </canvas>

この時、試してみて、エラーが報告された場合

HTMLCanvasElement' で 'toDataURL' の実行に失敗しました。汚染されたキャンバスはエクスポートされない可能性があります。

ググってみたところ、画像のクロスドメインの問題が原因らしいのですが、どうすれば直るのでしょうか?

新規に作成したimgに属性を追加するだけです。

img.setAttribute("crossorigin", "crossorigin");

つまり、新しいimgのコードのjsの部分は次のようになります。

var img = new Image();
// Since my business in the project is to add watermarks to Taobao images, here's the main image of a Taobao product
img.setAttribute("crossorigin", "crossorigin");// This code is to solve the cross-domain problem, if your image is your own, there is no cross-domain problem can be removed
img.src = 'https://gd4.alicdn.com/imgextra/i3/155/O1CN01XKkJqL1D11wYZbeI2_! !155-0-lubanu.jpg_400x400.jpg';

次に、完成品をご覧ください。

概要

上記は、画像にタイル状の透かしを追加するためのhtml5キャンバスの私の紹介です、私はそれがあなたを助けることを願って、あなたは私にメッセージを与えるために歓迎する任意の質問がある場合、私は時間にあなたに返信されます!...