2010-01-25 20 views
5

Acabo de comenzar a hacer un poco de trabajo de ImageMagick. Actualmente estoy intentando convertir una imagen de un tamaño de archivo casi cuadrado (1411 x 1486) o tamaños similares a una forma cuadrada, como 1024x1024. Desafortunadamente, la función de cambio de tamaño no parece hacer un cambio de tamaño del lienzo, así que sigo recibiendo número como 1024x982. Me pregunto si hay alguna forma de convertir una imagen no tan cuadrada en una imagen cuadrada usando sus bibliotecas de C++.ImageMagick - Cambiar el tamaño de la imagen al cuadrado

La razón por la que no son cuadrados es porque estoy convirtiendo posiciones de GPS a UTM y obteniendo una forma cuadrada, pero desafortunadamente debido a la curvatura de la tierra generalmente están a unos 400m de estar cuadradas ... en caso de que te lo estés preguntando .

Respuesta

6

¡Usted puede agregar un! a su geometría como "1024x1024!" en el cambio de tamaño o crear una geometría explícita para el método de cambio de tamaño. ¡También puede necesitar establecer el indicador de aspecto a través del! se supone que debe hacer eso (he leído que algunas personas han necesitado hacer esto, sin embargo, no tengo una explicación para ti sobre eso).

0

hice como dijo Joshua. funcionó para una imagen. (Gracias Joshua)

yo también quería añadir una solución para tratar por el tamaño porque

convert -resize 1024x1024! *.png 

no funcionó


así que aquí hay un comando de ejemplo para muestra de trabajo .

mkdir scaled 
for %%x in (*.png) do convert -resize 1024x1024! %%x .\scaled\%%x 
+0

es %% x sintaxis de Bash válida? ¿No debería ser algo así como $ x? ¿Y está usando el mismo archivo de salida que el archivo de entrada? Si es así, debes usar mogrify y no convertir, lo que no funciona bien en esta situación ... – luca

+0

en windows usando %% x está bien. ---- para la segunda pregunta, hay otro problema. el cual le da un archivo de salida se convierte en archivos de entrada en pasos posteriores, por lo que este proceso demora por siempre. en lugar de ponerlos en una carpeta es una mejor idea y editaré la respuesta ahora. – ufukgun

+0

@luca Si quieres bash harías 'por x en * .png; ¡convierta -resize '1024x1024!' $ x ./scaled/$x; done' – v010dya

8

El uso de 1024x1024! no rellenará la miniatura.

Aquí hay un enlace a lo que quiere http://www.imagemagick.org/Usage/thumbnails/#pad

La línea de comandos desde el enlace (para prevenir el enlace-rot):

convert -define jpeg:size=200x200 hatching_orig.jpg -thumbnail '100x100>' \ 
      -background skyblue -gravity center -extent 100x100 pad_extent.gif 
+0

Gracias! Esto hizo lo que necesitaba: convertir original.png -thumbnail '64x64>' -gravity center -background transparent -extent 64x64 thumbnail.png –

Cuestiones relacionadas