Comment rendre l'arrière-plan des images créées par JSL transparent à l'aide de Python ?Je n'ai pas réussi comme ça.
Merci!
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);

Automatisation et scriptsWindowsRéponse : Comment rendre l'arrière-plan des images créées par JSL transparent à l'aide de Python ?Python Envoyer(img);
faux.
Notez que les images ne doivent pas être enregistrées pendant le traitement.
Merci!
Re : Comment rendre l'arrière-plan des images créées par JSL transparent à l'aide de Python ?Le problème principal est de convertir les données de l'image JMP dans un format exploitable en Python. En reprenant le code ci-dessus, vous obtiendrez une image RGBA en Python exploitable.
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
]\");
C'est là qu'interviennent les limites de l'IA. Pour y parvenir efficacement, il est nécessaire de comprendre les fonctionnalités offertes par JSL et de transmettre ces données à Python de manière à ce qu'elles puissent être exploitées par les API Python. L'index de script JMP est un outil précieux ; je l'utilise comme référence.
Re : Comment rendre l'arrière-plan des images créées par JSL transparent à l'aide de Python ?Il semble que Python soit plus pratique pour traiter et enregistrer des images.
Merci les experts !

Re : Comment rendre l'arrière-plan des images créées par JSL transparent à l'aide de Python ?Il semble que Python soit plus pratique pour traiter et enregistrer des images.Je veux faire une telle image.
C'est dommage que JSL n'ait pas la fonction de rendre directement l'arrière-plan graphique transparent.

Re : Comment rendre l'arrière-plan des images créées par JSL transparent à l'aide de Python ?Voir l'index des scripts : Image
img << Transparency( 0. ); // définit le niveau de transparence de l'image entière 0..1 0 => transparent, 1 => opaque
Si vous voulez juste que l'arrière-plan soit transparent, << get pixels( "rgba" ) puis éditez les tableaux pour trouver les pixels blancs et définissez leur transparence à 0, puis utilisez << set pixels( "rgba", { r, g, b, a} ) pour réinitialiser les mises à jour à l'image.
Réponse : Comment rendre l'arrière-plan des images créées par JSL transparent à l'aide de Python ?La fonction Send() de JMP 18 en Python ne gère pas les images JMP. Les types de tables de données étaient prioritaires dans JMP 18. JMP 19 offre une prise en charge minimale des images, ce qui permet de les placer dans les tables de données depuis Python. Actuellement, JMP 19 EA ne propose aucun accesseur aux données d'image sous-jacentes depuis Python.
Re : Comment rendre l'arrière-plan des images créées par JSL transparent à l'aide de Python ?Merci les experts !
J'ai essayé d'écrire comme ça et j'ai également demandé à l'IA, mais j'ai toujours échoué.
Je savais avant que cela pouvait rendre l'image plus claire, mais ce n'est pas transparent.
Craige a spécifiquement avancé une suggestion pour obtenir la transparence de l’arrière-plan (dans le JMP 17, mais le JMP 18 n’a pas apporté d’amélioration).
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 : Comment rendre l'arrière-plan des images créées par JSL transparent à l'aide de Python ?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 : Comment rendre l'arrière-plan des images créées par JSL transparent à l'aide de Python ?