ritaglia l'immagine e salvala in una nuova colonnaVolevo ritagliare le immagini e memorizzarle in una nuova colonna.
Il mio primo approccio è stato:
for each row (:new col = :old col << crop(...))
... ma poi ho trovato il post di @Craige_Hales nella community,
https://community.jmp.com/t5/Discussions/Crop-a-JPG-Image/mp/442473/highlight/true#M69072
con le informazioni importanti:

Quindi ho provato questo:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
for each row (:pet = :picture );
wait(0);
for each row (:pet << Crop( Left( 5 ), Right( 10 ), Top( 6 ), Bottom( 100 ) ));
...senza effetto.
Nello Scripting Index ho trovato:

Forse potresti usare immagine come variabile temporanea?
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
for each row( img= :picture;;img << Crop( Left( 5 ), Right( 70 ), Top( 30 ), Bottom( 50 ) );:pet = img)
e infatti:

Ma dopo aver cliccato sulla tabella dati, ho notato che anche la colonna di input era stata modificata:

quindi, il mio script finale era:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
for each row( img= new image(:picture);img << Crop( Left( 5 ), Right( 70 ), Top( 30 ), Bottom( 50 ) );:pet = img)
- usa nuova immagine() per creare una nuova immagine
- ridimensiona questa immagine
- memorizzalo nella nuova colonna
Automazione e scriptingRi: ritaglia l'immagine e salvala in una nuova colonnaSfortunatamente, con il mio set di dati effettivo, solo alcune immagini sono state ritagliate.
La spiegazione è semplice: ho riempito la colonna delle immagini tramite copia/incolla da una presentazione di Powerpoint.
Tutte le immagini avevano lo stesso aspect ratio, quindi avevano le stesse dimensioni nella griglia dati JMP, ma non le stesse dimensioni reali! E il ritaglio funziona solo se i valori in pixel negli argomenti sono inferiori alle dimensioni reali dell'immagine.
Molto più facile da rilevare quando si utilizzano immagini con proporzioni diverse (ad esempio, quando si cerca di creare un caso dimostrativo per un post della community).

Open( "$SAMPLE_DATA/SAS Offices.jmp" );
New Column( "cropped", Expression);
for each row( img= new image(:Photo);
{w, h} = img << Get Size;
img << Crop( Left( 10 ), Right( 800 ), Top( 10 ), Bottom( 70 ) );:cropped = img)
quindi, il mio script finale era:
Open( "$SAMPLE_DATA/SAS Offices.jmp" );
New Column( "cropped", Expression );
For Each Row(
try(img = New Image( :Photo );
{w, h} = img << Get Size;
target = 500;
img << scale( 500 / w );
{w, h} = img << Get Size;
img << Crop( Left( Round( w / 3 ) ), Right( Round( w / 3 * 2 ) ), Top( Round( h / 10 ) ), Bottom( Round( h / 5 ) ) );
:cropped = img;)
);
Provare? -> nel caso in cui manchi una delle immagini.
Ri: ritaglia l'immagine e salvala in una nuova colonnaNon è difficile.
Penso che la parte difficile sia: rendere trasparente lo sfondo di un'immagine e sovrapporlo ad altre immagini.
JSL non ha la funzione di rendere trasparente lo sfondo delle immagini.
Può essere ottenuto solo con l'assistenza di altri software
Ri: ritaglia l'immagine e salvala in una nuova colonnarun program(executable("I:\00\FastStoneIV\magick.exe"),options({目||" -fill none -fuzz 0% -draw \!"color 92,30 floodfill\!" "||标}));
