Amigos,
¿Cuál es el mejor enfoque para abrir una sola imagen, escalarla a múltiples tamaños y guardar cada tamaño de escala en una variable?
Actualmente, estoy abriendo varias imágenes escaladas y organizadas para que la imagen final se copie y guarde en PowerPoint. Sin embargo, según el tipo de imagen importada, se necesitan dos distribuciones distintas ("coltwin_1" y "coltwin_2" en el script adjunto). Cada distribucion tendrá un valor de escala diferente.
Por ejemplo, intenté escalar una imagen abierta y guardarla como "col1", que estaría en "coltwin_1". La segunda variable escalada es "col1x", utilizada en la disposición "coltwin_2". Sin embargo, al usar col1x = col1 << Scale(1.5), la escala de col1 se propagó a ambos diseños.
¿Cuál es la mejor y más limpia manera de abordar esta cuestión?
Muchas gracias,
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
),
)
)
);
¡Pendiente!
Funciona perfectamente.
Muchas gracias,
que incluye cómo usar correctamente la función "Nueva imagen". El código adjunto es el que me funcionó.
Neil
col1 = Open(SD1 || samplename2 || "_a1_16col_filt.jpg", jpg);
col1 << Scale(.16);
col1x = New Image(col1);
col1x << Scale(2.2);
Parece que tendrás que crear una nueva imagen como 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());
Muchas gracias por el aporte.
Probé el enfoque inicial que sugirió, pero aún así me encontré con una situación en la que el factor de escala secundario aún afectaba la variable col1 inicial. Adjunté un gráfico que muestra lo que sucedió antes / después de comentar la última línea.

Definitivamente no estoy seguro de si este es el mejor enfoque, o siquiera un buen enfoque, pero creo que usar << Scale() no devolverá una nueva imagen, sino que simplemente actualizará la anterior. Creo que la solución más sencilla sería crear una copia de col1 en colx y luego escalarla.
col1 = Open(SD1 || samplename2 || "_a1_16col_filt.jpg", jpg);
col1 << Scale(.16);
col1x = col1;
col1x << Scale(1.5);
Esto debería brindarle la imagen original primero escalada a 0,16 y luego una nueva imagen que será la imagen original primero escalada a 0,16 y luego a 1,5 (aunque podría ser mejor crear una copia antes de la escala de 0,16 y luego escalar al valor correcto).