¿Qué programa puede redimensionar y recortar automáticamente una carpeta de imágenes a una determinada resolución?

11

Me gustaría tomar una carpeta de imágenes de varios tamaños y recortarlas en una cuadrícula de 600x600, recortadas del medio de la imagen. ¿Existe un programa que pueda cambiar automáticamente el tamaño y recortar a estas dimensiones, y luego salir como un archivo comprimido .png? Para las imágenes que son más pequeñas que 600x600, me gustaría que el programa aumente el tamaño de la imagen a esa dimensión.

Peter
fuente
1
Revisé mi Irfanview, y su recorte por lotes es estático con solo la opción de comenzar desde las esquinas y un desplazamiento fijo. No puede hacer el centrado y el cambio de tamaño condicional solicitado por el OP. No es apto para tamaños de imagen variables.
Michael Nielsen
1
Tenía muchas esperanzas de que XnConvert pudiera hacer lo que buscaba, pero al igual que IrfanView, no hará un recorte centrado en tamaños de imagen arbitrarios.
Mark Whitaker, el

Respuestas:

12

El comando Batch de Photoshop puede hacer esto. Esencialmente, se 'grabaría' a sí mismo realizando el recorte, etc. una vez, luego ejecutaría la grabación en todos los archivos que desee. Si desea cambiar automáticamente el tamaño de las imágenes más pequeñas, tendrá que hacer un pequeño script.

Irfanview también tiene un completo procesador por lotes de imágenes, pero puede requerir un poco de experimentación para obtener los resultados que desea.

ElendilTheTall
fuente
10

ImageMagick te permite ejecutar comandos en una ventana de comandos de Windows. Debe sentirse cómodo con la creación de archivos por lotes Dos.

Para ver un ejemplo, vea la última publicación en esta discusión: http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=21112

Ejemplo relevante de esta publicación del foro:

@echo off

cd C:\Users\user\Desktop\New\New folder

convert *.jpg -fuzz 10%% -trim -write %%02d_trim.png -scale "x1!" txt:

convert *_trim.png -crop 209x329+0+0 -fuzz 10%% -trim +repage %%02d_left.png

convert *_trim.png -crop 173x336+227+0 -fuzz 10%% -trim +repage %%02d_right.png

@pause
René
fuente
Es mejor si las partes relevantes de los recursos externos se citan o resumen aquí. Los enlaces externos pueden desconectarse en cualquier momento, invalidando una respuesta que solo contiene un enlace. El enlace que proporcionó tiene una respuesta, sin embargo, le pido que cite el comando relevante aquí en su respuesta para hacerlo más viable.
jrista
7

Primero pensé que querías cambiar el tamaño del lote, que muchos programas pueden hacer. Pero luego me di cuenta de que desea hacer una combinación de cambio de tamaño y recorte, y desea que la computadora calcule la mejor forma de cortar dinámicamente 600x600 píxeles de la imagen.

Es porque no es un tipo de tarea de "una verdadera solución", como suele ser la decisión del juicio humano, cómo recortar la imagen, por lo que solo se puede hacer mediante el arranque de ciertas condiciones. Por ejemplo, mire la relación de aspecto y siempre cambie el tamaño de la dimensión más corta a X y recorte los píxeles Y (centrado / derecho / izquierdo). Si leí bien su declaración, desea recortar 600 píxeles de X e Y centrados en ambas dimensiones, si ambas dimensiones son 600 o más. ¿Y solo cambia el tamaño a 600 si una dimensión es menor que 600?

Durante mucho tiempo he querido agregar una función como esta a mi programa "Image View Plus More", y supongo que la configuración de la función debería ser algo así como: - tamaño de recorte: wxh - alinear ancho: centro / izquierda / derecha - alinear altura: centro / izquierda / derecha - cambiar tamaño: no / si es menor que / si es mayor que / ambos

¿Alguna otra configuración que necesites?

Actualización: ahora he terminado de programar esta función en Image View Plus Más 2.4:

http://www.sequoiagrove.dk/tools.php

Cómo hacerlo: instalar, arrastrar y soltar las imágenes que desea recortar en él, "guardar todo en una nueva carpeta", y asignarle un nombre de base o% para usar el nombre de archivo original, y luego en el siguiente diálogo seleccionar "recorte automático" "y llene los cuadros para ancho y alto, y seleccione la alineación" centro "para alto y ancho, y marque" cambiar tamaño si es más pequeño ".

Hice un tutorial sobre cómo hacerlo:

La solución al problema de OP: http://www.youtube.com/watch?v=wBc1s6zuDJM

Otro ejemplo: http://www.youtube.com/watch?v=3nFrnaefsqA

Michael Nielsen
fuente
Vea mi respuesta, escribí el código en Python.
Onlyjus
1
Sí, ahora no es tan estático, pero ¿estás seguro de que el OP está interesado en programar la edición de su imagen?
Michael Nielsen
No tengo idea. El OP acaba de pedir un programa, así que escribí uno.
Onlyjus
Como puede ver, ahora agregué la función y tengo ideas para mejoras, como "mostrar con el ejemplo" (en la foto que se ve actualmente), por lo que no tiene que limitarse a centrarse o alinearse con los bordes. Ofc tendría que descubrir cómo generalizar ese ejemplo a diferentes proporciones y tamaños de aspecto.
Michael Nielsen
¡Agradable! ¿Cuál es su programa escrito y está la fuente disponible?
Onlyjus
5

Si le gusta programar, puede usar Python (lenguaje informático) y una excelente biblioteca sabe que tiene PIL para recortar, redimensionar, trazar histogramas, obtener valores de píxeles individuales, etc. en un nivel programático. Por lo tanto, puede escribir fácilmente un script simple para encontrar todas las imágenes en una carpeta y realizar la operación.

Este código debe hacer exactamente lo que desea y debe procesar un par de imágenes por segundo, dependiendo del tamaño de la imagen:

#Python 2.7, PIL 1.1.7

import Image
import glob
import os

#Function to resize image, preserving aspect ratio
def resizeAspect(im, size):
    w,h = im.size
    aspect=min(size[0]/float(w), size[1]/float(h))
    return im.resize((int(w*aspect),int(h*aspect)),Image.ANTIALIAS)

imgList=glob.glob('C:/icons/*.png')         #Find all png images in a directory

for img in imgList:                              #Loop through all found images
    im = Image.open(img)                         #open the image
    print "resizing:",os.path.basename(img)
    w,h = im.size                                #Get image width and height
    if min(w,h)<600:                             #Check if either dimension is smaller then 600
        im=resizeAspect(im,(600,600))            #Re-size Image
        w,h = im.size                            #update image size
    center = [int(w/2.0),int(h/2.0)]             #Calculate Center
    box = (center[0]-300, center[1]-300, center[0]+300, center[1]+300) #Defines a box where you want it to be cropped
    croppedIm = im.crop(box)                     #Crop the image
    #croppedIm.show()                            #Show the cropped image
    fileName, fileExtension=os.path.splitext(img)
    croppedIm.save(fileName+'_crop.png', "PNG")  #Save the cropped image

Cuando comienzas a trabajar en el nivel programático, ¡el cielo es el límite! Incluso es posible detectar caras y recortar alrededor de la cara, lo que le permite recortar de forma inteligente miles de fotos ...

[actualizado el 12/09/2012]

Onlyjus
fuente
4

ThumbsPlus puede hacer lo que solicite. En el menú Imagen, seleccione Proceso por lotes o presione F12 y responda las indicaciones interactivas. Puede agregar múltiples operaciones a un conjunto y guardarlo para su uso inmediato, así como para su uso futuro. En el futuro, solo acceda al nombre del conjunto que configuró previamente para ejecutarlo automáticamente en un directorio o selección de fotos, o incluso en un árbol de directorios completo.

Al crear el conjunto, se le proporciona una imagen de muestra para ilustrar la opción que ha agregado a las operaciones.

Tenga cuidado al construir el conjunto, ya que el orden de las operaciones es importante.

Victor Engel
fuente
4

Sizzlepig.com es una herramienta en línea que lo hará fácilmente, puede establecer el tamaño del "plano" en 600x600 y luego hacer que recorte todas las imágenes.

Para la parte "Para imágenes que son más pequeñas que 600x600, me gustaría que el programa aumente el tamaño de la imagen a esa dimensión". Recomiendo encarecidamente NO intentar ampliar las imágenes, sino tratar de encontrar una fuente de mayor calidad para trabajar. Sé que no siempre es posible, pero dará como resultado una salida de mucha mayor calidad que intentar mejorar.

(Trabajo para sizzlepig, pero sigue siendo una gran herramienta)

Jeremy
fuente
Por favor vea las preguntas frecuentes . Está bien mencionar tus propias cosas aquí, pero debes decirlo.
Lea mi perfil el
1
Frio. Bienvenido al sitio, y quédese y responda y haga algunas otras preguntas. :)
Lea mi perfil el
2

Irfanview puede hacer esto, pero requiere un poco de configuración.

Use la opción de conversión por lotes. Elija "PNG" como formato de salida. Haga clic en el botón "opciones" al lado del formato de salida y elija la compresión que desee y haga clic en Aceptar

Marque la casilla que dice "Usar opción avanzada" y luego haga clic en el botón "avanzado"

Verás esta ventana

Configuración avanzada de Irfanview

Configure el cambio de tamaño con el lado más corto 600. Asegúrese de marcar "preservar la relación de aspecto" y "usar la función de remuestreo". Desmarque "No agrandar imágenes más pequeñas"

Si está reduciendo drásticamente el tamaño de sus imágenes originales, entonces puede marcar la casilla "enfocar" y agregar un valor. Mi requisito era para imágenes de 150x150 y descubrí que necesitaban un valor de nitidez de aproximadamente 20 para coincidir con la calidad de imagen que obtenía de Photoshop. Para sus imágenes de 600x600, es posible que no necesite un valor de nitidez, por lo que puede desmarcar esa opción.

En lugar de usar "recortar", use la configuración de "tamaño de lienzo" - asegúrese de marcar la opción

Haga clic en el botón "configuración" junto a la opción de tamaño del lienzo. Verás esta ventana

Opciones de tamaño de lienzo Irfanview

Seleccione el método 2 y el ancho y la altura como 600. Elija la opción "centro" para el ancla

El color del lienzo no importa, ya que en realidad no agregará un borde de imagen

Ahora, en la pantalla avanzada, vuelva a marcar la casilla junto a "orden de procesamiento personalizado" y asegúrese de que el "cambio de tamaño" esté primero en la lista, es decir, para que el cambio de tamaño se realice antes del recorte.

Haga clic en Aceptar

Asegúrese de haber seleccionado los archivos que desea convertir, configure el directorio de salida y luego haga clic en "iniciar lote"

Nat
fuente
0

Hay una utilidad con múltiples opciones disponibles en http://pixresizer.software.informer.com/

Este es un buen software. Buen medio, fácil de usar y más rápido en el trabajo. Mientras hago fotografía, la estoy usando para procesar imágenes en lote. Muchas veces necesito reducir el tamaño de las fotos para compartirlas en Internet. También probé algún otro software, pero este me pareció bueno. (No estoy asociado con esta empresa).

Mahesh Mankar
fuente
¿El software es bueno? ¿Por qué? ¿Estás asociado con la empresa?
Paul Cezanne
Hola Paul, sí, este es un buen software. Buen medio, fácil de usar y más rápido en el trabajo. Mientras hago fotografía, la estoy usando para procesar imágenes en lote. También probé otro software, pero lo encontré bueno. ¡No !, no estoy asociado a esta empresa.
Mahesh Mankar
Mahesh, ¿puedes tomar tus comentarios y editar tu respuesta? No todos leen los comentarios. Y cuéntanos más y más al respecto, nos encantaría saberlo
Paul Cezanne
0

No sé por qué nadie lo menciona, pero mi favorito es multipleimageresizer.net . Le permite hacer muchas cosas como recortar, cambiar el formato, el tamaño, agregar texto, marca de agua ... etc. en múltiples imágenes al mismo tiempo.

Esto es un ahorro de tiempo real ... ¡lo recomiendo!

538ROMEO
fuente