Gente,
Qual è l'approccio migliore per aprire una singola immagine, ridimensionarla in più dimensioni e salvare ogni dimensione di scala in una variabile?
Al momento, sto aprendo diverse immagini ridimensionate e disposte in modo che l'immagine finale venga copiata e salvata in PowerPoint. Tuttavia, a seconda del tipo di immagini importate, sono necessarie due distinte disposizioni ("coltwin_1" e "coltwin_2" nello script allegato). Una disposizione avrà un valore di scala diverso.
Ad esempio, ho provato a ridimensionare un'immagine aperta e a salvarla come "col1", che si troverebbe in "coltwin_1". La seconda variabile ridimensionata è "col1x", utilizzata nella disposizione "coltwin_2". Tuttavia, usando col1x = col1 << Scale(1.5), la scala per col1 si propagava in entrambi i layout.
Qual è l'approccio migliore e più pulito a questo problema?
Grazie molto,
Neil
col1 = Open(SD1 || samplename2 || "_a1_16col_filt.jpg", jpg);
col1 << Scale(.16);
col1x = col1 << Scale(1.5);
col2 = Open(SD1 || samplename2 || "_a2_16col_filt.jpg", jpg);
col2 << Scale(.16);
col2x = col2 << Scale(1.5);
coltwin_1 = Expr( // For surface orientation
V List Box(
H List Box(
sem1,
col1 ,
LT1 ,
),
sp1 = Spacer Box( size(0, 50)),
H List Box(
sem2,
col2,
LT2,
),
sp2 = Spacer Box( size(0, 50)),
H List Box(
sem3,
col3,
LT3
)
)
);
coltwin_2 = Expr( // For Xsec orientation
V List Box(
H List Box(sem1,
V Splitter Box(
col1x,
LT1x
),
),
sp1 = Spacer Box( size(0, 50)),
H List Box(sem2,
V Splitter Box(
col2x,
LT2x
),
),
sp2 = Spacer Box( size(0, 50)),
H List Box(sem3,
V Splitter Box(
col3x,
LT3x
),
)
)
);
Eccezionale!
Funziona perfettamente.
Grazie molto,
che include come utilizzare correttamente la funzione "Nuova Immagine". Il codice allegato è quello che ha funzionato per me.
Neil
col1 = Open(SD1 || samplename2 || "_a1_16col_filt.jpg", jpg);
col1 << Scale(.16);
col1x = New Image(col1);
col1x << Scale(2.2);
Sembra che dovrai creare una nuova immagine come col1x = New Image(col1);
Names Default To Here(1);
img = Open("$SAMPLE_IMAGES/tile.jpg", jpg);
Show(img << get size());
img << scale(0.5);
Show(img << get size());
img2 = img;
img2 << Scale(2);
Show(img << get size(), img2 << get size());
img3 = New Image(img);
img3 << scale(3);
Show(img << get size(), img3 << get size, img2 << get size());
Grazie mille per il contributo.
Ho provato l'approccio iniziale che hai suggerito, ma mi sono comunque trovato in una situazione in cui il fattore di scala secondario continuava a influenzare la variabile iniziale col1. Ho allegato un grafico che mostra cosa è successo prima/dopo il commento dell'ultima riga.

Non sono assolutamente sicuro che questo sia l'approccio migliore o addirittura valido, ma... penso che usare << Scale() non restituirà una nuova immagine e aggiornerà solo quella vecchia. Penso che la soluzione più semplice sarebbe creare una copia di col1 in colx e poi ridimensionarla.
col1 = Open(SD1 || samplename2 || "_a1_16col_filt.jpg", jpg);
col1 << Scale(.16);
col1x = col1;
col1x << Scale(1.5);
Questo dovrebbe farti ottenere l'immagine originale prima ridimensionata a 0,16 e poi una nuova immagine che sarà l'immagine originale prima ridimensionata a 0,16 e poi a 1,5 (anche se potrebbe essere meglio creare una copia prima del ridimensionamento a 0,16 e poi ridimensionarla al valore corretto).