Wie kann man mit Python den Hintergrund von mit JSL erstellten Bildern transparent machen?Das ist mir nicht gelungen.
Danke!
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);

Automatisierung und SkriptingWindowsFrage: Wie kann ich mit Python den Hintergrund von mit JSL erstellten Bildern transparent machen?Python Send(img);
falsch.
Beachten Sie, dass die Bilder während der Verarbeitung nicht gespeichert werden sollten.
Danke!
Betreff: Wie kann ich mit Python den Hintergrund von mit JSL erstellten Bildern transparent machen?Das Hauptproblem besteht darin, die JMP-Bilddaten in ein Format zu bringen, mit dem Sie in Python arbeiten können. Mit Ihrem obigen Code erhalten Sie ein RGBA-Bild in Python, mit dem Sie dann arbeiten können.
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
]\");
Hier kommen die Grenzen der KI zum Tragen. Um effizient zu arbeiten, müssen Sie die Möglichkeiten von JSL verstehen und wissen, wie Sie diese Daten so an Python übertragen, dass sie von den Python-APIs genutzt werden können. Der JMP-Skriptindex ist dabei hilfreich; ich verwende ihn als Referenz.
Betreff: Wie kann ich mit Python den Hintergrund von mit JSL erstellten Bildern transparent machen?Es scheint, dass Python für die Verarbeitung und Speicherung von Bildern besser geeignet ist.
Danke, Experten!

Betreff: Wie kann ich mit Python den Hintergrund von mit JSL erstellten Bildern transparent machen?Es scheint, dass Python für die Verarbeitung und Speicherung von Bildern besser geeignet ist.Ich möchte so ein Bild machen.
Schade, dass JSL nicht über die Funktion verfügt, den Grafikhintergrund direkt transparent zu machen.

Betreff: Wie kann ich mit Python den Hintergrund von mit JSL erstellten Bildern transparent machen?Siehe Skriptindex: Bild
img << Transparenz( 0. ); // legt die Transparenzstufe des gesamten Bildes fest 0..1 0 => transparent, 1 => undurchsichtig
Wenn Sie nur den Hintergrund transparent haben möchten, << get pixels( "rgba" ) bearbeiten Sie dann die Arrays, um die weißen Pixel zu finden und ihre Transparenz auf 0 zu setzen, und verwenden Sie dann << set pixels( "rgba", { r, g, b, a} ), um die Aktualisierungen wieder auf das Bild zu setzen.
Frage: Wie kann ich mit Python den Hintergrund von mit JSL erstellten Bildern transparent machen?JMP 18 Python Send() kann mit JMP-Bildern nicht umgehen. Datentabellentypen hatten in 18 Priorität. JMP 19 bietet nur minimale Bildunterstützung, sodass Bilder aus Python in die Datentabelle eingefügt werden können. Derzeit gibt es in JMP 19 EA keine Zugriffsmethoden für die zugrunde liegenden Bilddaten aus Python.
Betreff: Wie kann ich mit Python den Hintergrund von mit JSL erstellten Bildern transparent machen?Danke, Experten!
Ich habe versucht, so zu schreiben und habe auch die KI gefragt, aber es ist mir trotzdem nicht gelungen.
Ich wusste vorher, dass das Bild dadurch heller werden kann, aber transparent ist es nicht.
Craige machte insbesondere einen Vorschlag zur Erzielung von Hintergrundtransparenz (in JMP 17, JMP18 brachte jedoch keine Verbesserung).
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);Betreff: Wie kann ich mit Python den Hintergrund von mit JSL erstellten Bildern transparent machen?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
Betreff: Wie kann ich mit Python den Hintergrund von mit JSL erstellten Bildern transparent machen?