Python を使用して JSL で作成された画像の背景を透明にするにはどうすればよいですか?私はこのように成功しませんでした。
ありがとう!
dt = Open("$SAMPLE_DATA/Big Class.jmp");
p1 = dt << Graph Builder(
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:sex)),
Elements(Points(X, Y, Legend(1)), Smoother(X, Y, Legend(2)))
);
img = p1 << Get Picture;
img_binary = img << Get Blob("PNG");
base64_img = Blob To Base64(img_binary);
Python Send("base64_img", base64_img);
Python Submit("
import base64
from PIL import Image
import numpy as np
import io
def remove_white_background(img_data_bytes):
img = Image.open(io.BytesIO(img_data_bytes))
if img.mode != 'RGBA':
img = img.convert('RGBA')
data = np.array(img)
white_pixels = (data[:, :, 0] >= 240) & (data[:, :, 1] >= 240) & (data[:, :, 2] >= 240)
data[white_pixels, 3] = 0
new_img = Image.fromarray(data)
output = io.BytesIO()
new_img.save(output, format='PNG')
return output.getvalue()
img_data_bytes = base64.b64decode(base64_img)
transparent_img_binary = remove_white_background(img_data_bytes)
");
transparent_img_binary = Python Get("transparent_img_binary");
transparent_img = New Image(transparent_img_binary);

自動化とスクリプトウィンドウズ回答: Python を使用して JSL で作成された画像の背景を透明にするにはどうすればよいですか?Python Send(img);
間違っている。
処理中は写真を保存しないよう注意してください。
ありがとう!
Re: Python を使用して JSL で作成された画像の背景を透明にするにはどうすればよいでしょうか?主な問題は、JMP画像データをPythonで扱える形式に変換することです。上記のコードを実行すると、PythonでRGBA画像が生成され、それを扱えるようになります。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
p1 = dt << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
img = p1 << Get Picture;
m = img << Get Pixels( "rgba" ); // See scripting index for docs on get pixel
python send(m); // Sends list of vectors { [r],[g],[b],[a] }
python submit("\[
from PIL import Image
import numpy as np
print(m.__class__)
# JMP image values are 0..1 so covert and make numpy array
rgb_uint8 = (np.dstack((m[0],m[1],m[2],m[3])) * 255.999) .astype(np.uint8)
pyimg = Image.fromarray(rgb_uint8,"RGBA"). #you now have a PIL.Image in Python.
pyimg.save(jmp.HOME+'pyimg.png'). # here I saved just to prove image made it through
]\");
ここでAIの限界が出てきます。これを効率的に行うには、JSLが提供する機能と、そのデータをPython APIで利用できる形でPythonに渡す方法を理解する必要があります。JMPのスクリプトインデックスは大変役に立ちます。私はいつもこれをリファレンスとして使っています。
Re: Python を使用して JSL で作成された画像の背景を透明にするにはどうすればよいでしょうか?画像の処理や保存にはPythonの方が便利なようです。
専門家の皆様、ありがとうございます!

Re: Python を使用して JSL で作成された画像の背景を透明にするにはどうすればよいでしょうか?画像の処理や保存にはPythonの方が便利なようです。そんな絵を描きたい。
JSL にはグラフィックの背景を直接透明にする機能がないのは残念です。

Re: Python を使用して JSL で作成された画像の背景を透明にするにはどうすればよいでしょうか?スクリプトインデックスを参照: 画像
img << Transparency( 0. ); // 画像全体の透明度レベルを 0..1 に設定します。0 => 透明、1 => 不透明
背景だけを透明にしたい場合は、<< get pixels( "rgba" ) を実行して配列を編集し、白いピクセルを見つけてその透明度を 0 に設定してから、<< set pixels( "rgba", { r, g, b, a} ) を使用して更新を画像に戻します。
回答: Python を使用して JSL で作成された画像の背景を透明にするにはどうすればよいですか?JMP 18のPython Send()はJMP Imageの処理方法を認識できません。JMP 18ではデータテーブル型が優先されていました。JMP 19ではImageを最低限サポートしているため、PythonからデータテーブルにImageを配置できます。現時点では、JMP 19 EAには、Pythonから基になる画像データにアクセスするためのアクセサーはありません。
Re: Python を使用して JSL で作成された画像の背景を透明にするにはどうすればよいでしょうか?専門家の皆様、ありがとうございます!
このように書いてAIにも質問してみましたが、それでも失敗しました。
これによって画像が明るくなることは以前から知っていましたが、透明にはなりません。
Craige 氏は、背景の透明性を実現するための提案を具体的に提出しました (JMP 17 では、JMP18 では改善されませんでした)。
dt = Open("$SAMPLE_DATA/Big Class.jmp");
p1 = dt << Graph Builder(
Show Control Panel(0), Show Legend(0), Show Title(0), Show Footer(0), Show X Axis(0), Show Y Axis(0), Show X Axis Title(0), Show Y Axis Title(0),
Variables(X(:height), Y(:weight), Overlay(:sex)),
Elements(Points(X, Y, Legend(1)), Smoother(X, Y, Legend(2)))
);
img = p1 << Get Picture;
m = img << Get Pixels("rgba");
size_info = img << Get Size;
img_width = If(N Items(size_info) >= 1, size_info[1], 0);
img_height = If(N Items(size_info) >= 2, size_info[2], 0);
n = m;
white_pixels = Loc(m[0, 0, 1] == 255 & m[0, 0, 2] == 255 & m[0, 0, 3] == 255);
for(k = 1, k <= N Rows(white_pixels), k++,
i = white_pixels[k, 1];
j = white_pixels[k, 2];
n[i, j, 4] = 0
);
img << Set Pixels("rgba", n);
win2 = NewWindow("Transformed - White Transparent", img);Re: Python を使用して JSL で作成された画像の背景を透明にするにはどうすればよいでしょうか?https://community.jmp.com/t5/JMP-Wish-List/Transparent-background-color-for-graphs/idi-p/627431
https://community.jmp.com/t5/Discussions/How-to-use-JSL-graph-background-for-transparent-graphics/mp/627070#M82571
Re: Python を使用して JSL で作成された画像の背景を透明にするにはどうすればよいでしょうか?