2011-12-11 19 views
6

He estado teniendo problemas para organizar los elementos gráficos correctamente. He aquí un ejemplo:¿Cómo controlar el tamaño de las imágenes y los gráficos?

im1 = Import["http://upload.wikimedia.org/wikipedia/commons/5/5c/London_2010_Tower_Bridge.jpg"]; 
GraphicsRow[{im1, ImageAdd[im1, Graphics[Disk[]]], Graphics[Disk[]]}] 

example of problems

Los círculos se especifican tanto de la misma manera, pero muestran a diferentes escalas, por lo que el diagrama que intenta mostrar cómo funciona no es muy satisfactoria. Obviamente, se escala para que coincida con la imagen, pero no puedo ver por qué no aparecen del mismo tamaño. es similar a GraphicsRow pero me da el mismo problema.

Respuesta

8

El problema se produce porque en la pantalla, el disco utilizado en la máscara tiene un diámetro igual a la altura de la imagen, mientras que el disco independiente tiene un diámetro igual al ancho de la imagen. Puede corregir esto especificando el tamaño del disco de forma explícita.

im1 = Import[ 
    "http://upload.wikimedia.org/wikipedia/commons/5/5c/London_2010_\ 
Tower_Bridge.jpg"]; 
disk = Graphics[Disk[], ImageSize -> [email protected]]; 
GraphicsRow[{im1, ImageAdd[im1, disk], disk}, Spacings -> 0, ImageSize -> Full] 

enter image description here

+0

parece simple cuando lo haces. Gracias ... – cormullion

5

Hay relleno alrededor de las imágenes y ninguno alrededor del disco negro. Al conocer la relación de aspecto de la imagen importada (obtenido de ImageDimensions), y mediante el establecimiento de un tamaño específico para GraphicsRow y para el disco negro, se puede controlar la apariencia:

GraphicsRow[{im1, ImageAdd[im1, Graphics[Disk[]]], 
    Graphics[Disk[], ImageSize -> 90, ImagePadding -> 15]}, 
ImageSize -> 360, Spacings -> 0] 
+0

Hola Mike, me alegro de verte aquí. Bienvenido a Stack Overflow! – Simon

+0

Eso funciona muy bien, gracias! – cormullion

6

Otra opción sería la de envolver el imágenes en un Pane con ancho automático y altura fija, por ejemplo

Row[Pane[#, {Automatic, 200}] & /@ 
{im1, ImageAdd[im1, Graphics[Disk[]]], Graphics[Disk[]]}] 

scaled to have the dame height

+0

¡Gracias, no sabía nada de Pane ...! – cormullion

+0

¡Esto se ve tan inmaculado! –

Cuestiones relacionadas