• 締切済み

描画するときの画像の色を変えたい

こんにちは。 html5でcanvasに画像を描画しているのですが、この時に画像の色調を変える方法はありますでしょうか? 画像はアルファ付きのpngで、周囲が透明の白い図形です。 この図形を例えば青っぽく描画したり、赤っぽく描画したりしたいのですが、javascriptで可能でしょうか?

みんなの回答

noname#237555
noname#237555
回答No.5

結論から言うと、可能です. 例えば次のようなコードで画像を赤っぽく加工できます. const ctx = canvas.getContext("2d"); //元画像を描画する ctx.drawImage(img, 0, 0, canvas.width, canvas.height); //赤い画像を重ねる ctx.globalCompositeOperation = "screen"; ctx.fillStyle = "rgba(128,0,0)"; ctx.fillRect(0, 0, canvas.width, canvas.height); //元画像の範囲で切り抜く ctx.globalCompositeOperation = "destination-in"; ctx.drawImage(img, 0, 0, canvas.width, canvas.height); この他にもfilterを使ったもの, ピクセル操作を用いるもの等様々な方法があります. が、質問の内容だけではどのような結果を要しているのか判断できません.

参考URL:
http://jsdo.it/defghi1977/8QV0
  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.4

不透明度の分塗りたい色で塗りつぶすることが考えられます。 例えばこんな感じですね var id=ctx.getImageData(0,0,400,400) var data=id.data data.forEach((v,i)=>{if(i%4==3){data[i-3]=v;data[i-2]=0;data[i-1]=0}}) ctx.putImageData(id,0,0)

  • chie65535
  • ベストアンサー率43% (8512/19350)
回答No.3

で、ここからが本題。 >画像はアルファ付きのpngで、周囲が透明の白い図形です。 >この図形を例えば青っぽく描画したり、赤っぽく描画したりしたいのですが、javascriptで可能でしょうか? 「可能と言えば可能」だけど、かなり面倒です。 ・方法その1 色々な色調のpng画像を、予め何百個も用意しておいて、どれを表示するか、javascriptで切り替える。 この方法の長所:画像ファイルを必要なだけ用意すれば良いので、処理が簡単。 この方法の短所:用意してない色調は表示できない。 ・方法その2 pngファイルを「バイナリで分解」したパーツを用意しておき、javascriptのプログラムでPLTEチャンクの部分を生成して、動的にpng画像を生成して、その都度、生成したpngを表示する。 この方法の長所:動的に画像ファイルを生成するので、どのような色調にも対応できる。 この方法の短所:pngファイルのファイル構造を熟知していなければならず、画像ファイルを動的に生成するので、ブラウザでページをリロードされると「キャッシュに残っていた別の色調の画像が出てしまう」や「他の閲覧者が表示した、別の色調の画像が出てしまう」などの不具合が出る場合がある。

  • chie65535
  • ベストアンサー率43% (8512/19350)
回答No.2

>png画像でもfillStyleは関係するのでしょうか? png画像は、canvasとは何の関係も無い。 >html5でcanvasに画像を描画しているのですが これって「Googleが提供しているExplorerCanvasというJavaScriptライブラリを使用している」と言う意味ですよね? 違うなら「canvasに」と言う表記は「誤解の元」なので「画面に」と言い替えて下さい。 当方は「Googleが提供しているExplorerCanvasというJavaScriptライブラリを使用していて、excanvas.jsライブラリを組み込んで使用している」と言う前提で回答しています。 excanvas.jsライブラリは、画面に円や直線や四角形を描画するライブラリで、pngやGIF画像とは何の関連性もありません。まったくの「別物」です。

  • chie65535
  • ベストアンサー率43% (8512/19350)
回答No.1
titokani
質問者

補足

えっと、変わらないようなのですが。 png画像でもfillStyleは関係するのでしょうか?

関連するQ&A

  • Canvasを使わずに直角三角形を描画できますか?

    図のような図形の描画を、JavaScriptで描くには? 条件は、 ・Vanilla JavaScriptのこと ・Canvasを不使用 ・svgを不使用

  • 描画キャンパス

    ワード2007ですが、描画キャンパスが出せません。 ヘルプに示された手順は 描画キャンバスを挿入します。[挿入] タブの [図] で [図形] をクリックし、[新しい描画キャンバス] をクリックします。 ですが、挿入タブの図をクリックすると マイピクチャーがポップアップします。又図形をクリックすると基本図形 その他が表示されます。 ヘルプで言う [図] で [図形] をクリックし とは何なのかわかりません。 ご指導お願いいたします。

  • iアプリ作成 画像を描画できない

    最初に4つのメニューを表示し、メニュー1を選ぶとある画像を表示し、メニュー2を選ぶとまた別の画像を表示する様なiアプリを作成しています。 その作り方が、メニュー1を選ぶと Manu1Canvas c = new Menu1Canvas(); Display.setCurrent(c); c.exe(); という感じでMenu1Canvasクラスのexe()の内容を実行し画像を描画しています。この時Menu1CanvasはCanvasを継承しておりpaint()メソッドを使い描画をしています。 メニュー2を選んだ場合も同じように、Canvasを継承したクラスで画像を描画しています。 このようにそれぞれのメニュー4つにクラスを作り、その4つのクラスにCanvasを継承させpaint()メソッドを使い画像を描画するという処理内容はおかしいのでしょうか?このようにやるとなぜか画面を切り替える時にDojaエミュレータが終了してしまいます。

    • ベストアンサー
    • Java
  • ドラッグして描画図形を拡大縮小する方法

    マウスで選択すると、その選択した描画図形が拡大縮小するという方法を教えてほしいです。図形は、Canvasで描いています。お願いします。

  • canvasで完全二分木を描画したいのですが

    JavaScriptのcanvasを使って、画像の様な完全二分木を描画したいです。 木の深さをrとし、rは任意で変更できるようにしたいと考えています。 canvasのサイズは1000x1000程度で、r=4くらいまで対応できるものであれば幸いです。

  • EXCELでも、WORD描画キャンバスのように・・

    EXCELでも、WORD描画キャンバスのように、複数図形をまとめて配置/移動できないでしょうか? EXCEL2010を使用しています。 御存じのように、WORD2010のような「描画キャンバス」は、EXCEL側には用意されていません。 私は、WORDでは「描画キャンバス」を、複数図形をまとめて乗っけて、そのなかで選択・配置したり、全部まとめて動かせる、お盆(トレー)のようなものとして使用しています。 それと同様の事をEXCELでやろうとする時は、ふつうは たぶん以下の操作になるかと思います。 図形(オートシェイプ)で大きな透明な四角形(正方形/長方形)を作り ↓ その上に、複数の細かい図形を置き、個々に選択し、適当な位置に配置 ↓ 全体を移動したいときには、全部の図形を選択してそれを”グループ化”する。 ↓ グループ全体を選択して、移動する ↓ その後、個々の細かい図形を選択したいときには、 一旦、”グループ解除”を行って、それから個々の細かい図形を選択。 (※そのまま選択するとグループ全体の選択になってしまうので) さて、この手順を見ますと、 細かい図形を全部まとめて一気に移動したり、 細かい図形を個々に選択して操作したり、するには 毎回、いちいち「”グループ化”、”グループ解除”」の手間 が伴っております。 WORDの「描画キャンバス」では、同様のことをするのに いちいち”グループ化”、”グループ解除”は必要ありません EXCELででも この いちいち”グループ化”、”グループ解除”の 手間を省いてやる方法は 無いものでしょうか? 御指南、よろしくお願いいたします。

  • 図形の描画はできるのでしょうか?

    JavaScriptで図形は描画できるのでしょうか?なにか参考になるサイトはありますか?

  • クリップアートを描画キャンバスから取り出したい

    Word2003です 描画キャンバスの中のクリップアートの図形を取り出したいのですが よろしく御願いします。

  • 描画キャンバス内に書かれた図形から描画キャンバスをはずしたい

    ワード2003です 表の中に描画キャンバスでワードアート、テキストボックス等を描いた文書が知人から送られてきました 描画キャンバスを削除したいのですがクリックしても描かれたワードアートやテキストボックスが選択されて描画キャンバスが選択できませんので描画キャンバスが削除できません ワードアートやテキストボックスを活かして描画キャンバスだけを削除する方法がありますか教えてください

  • GDI+で描画した画像を消去するにはどうしたらいいですか?

    GDI+で描画した画像を消去するにはどうしたらいいですか? GDI+のGraphicsクラスのDrawImageメソッドで描画したPNG画像を 消去する方法が知りたいです。 画像の表示位置を図1から図2のように下側に移動させたいんですが 実行してみると図3のようになってしまいます。 なので図3の上側の画像を消去しないと移動したように見えないんです。

専門家に質問してみよう