質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

3回答

3826閲覧

Processingで画像を部分的に透過したいです

iijima140

総合スコア9

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2018/02/04 11:27

前提・実現したいこと

表題の通りです。

透過したい部分のピクセルが白に変更されたある画像を、それより大きなサイズの背景画像の上に表示しています。
この白い部分を透過する方法はありますでしょうか?

試したこと

loadPixels()をしてpixels[]の中で白いピクセルにアルファ値0のcolor型変数を代入してみましたが、アルファ値が反映されませんでした。

白い部分に背景画像の画素値を入れることも考えましたが、手前の画像(透過したい画像)は絶えず動く上に画像サイズが背景と異なるので、私の能力では計算するのは少し厳しいです。

PGraphicsを使うことも考えましたが、どうやらこちらではProcessingにもともとある命令でかけるものでしか透過画像を作れないようで、既製画像からは厳しそうです。

補足情報(FW/ツールのバージョンなど)

Processingは2系です。

当方Processing初心者で長々とわかりにくい説明で申し訳ありませんが、どなたかお力をお貸しいただけると幸いです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

古い投稿なのですでに解決済ですかね。
pixelのドットの色を抽出して小さい図形orスポットとして描画すれば、実現可能です。

PImage img; int imgWidth, imgHeight; //透過させたい範囲 int xstart = 100; int xstop = 200; int ystart = 50; int ystop = 100; void setup() { size(480, 320); img = loadImage("dataName"); imgWidth = img.width; imgHeight = img.height; noStroke(); smooth(); background(255); frameRate(60); } void draw() { background(255); img.loadPixels(); for (int x =0; x<imgWidth; x++) { for (int y=0; y<imgHeight; y++) { color imgColor = img.get(x,y); //x,yが選択した範囲であれば透過させる。 if(x>xstart && x<xstop && y>ystart && y<ystop){ fill(imgColor, 100); }else{ fill(imgColor); } ellipse(x, y, 1, 1); } } }

上記の

fill(imgColor, 100); ellipse(x, y, 1, 1);

stroke(imgColor, 100);//透過度 strokeWeight(1);//pointのドットのサイズ。1未満も設定可能です。 point(x, y);

としてもよいです。
*一応jpgデータを用いて、透過度が設定できる事が確認しました。

投稿2018/11/02 06:21

編集2018/11/07 14:32
YOshim

総合スコア1085

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

透過png形式の画像をPImageで読み込んで普通の画像と同じように表示すれば透過部分はしっかり反映されますよ。
透過pngはweb上でも作れますし、使いやすいフリーソフトもたくさんあるので探してみてください。

投稿2018/02/22 13:11

KEN_RP

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

iijima140

2018/09/29 07:10

回答ありがとうございます。 外部から透過pngを読み込むのではなく、Processingでかかれたプログラム上で作成された画像を部分的に透過したいので、その方法では解決できなさそうです。 せっかくご回答いただいたのにすみません。
guest

0

processing

1 //ここに<背景の画像>を読み込んでください。 2 // 3 for(int y=0;y<height;y++){ 4 for(int x=0;x<width;x++){ 5 color col=a.get(x, y);//a=白い部分を透過表示させたいPImae画像です 6 if(col!=color(255, 255, 255)){ 7 fill(col); 8 rect(x, y, 1, 1); 9 } 10 } 11 }

投稿2018/11/30 07:28

MOJupiter

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問