J'ai un répertoire plein d'images que je voudrais redimensionner à environ 60% de leur taille d'origine.Redimensionner des images dans le répertoire
Comment ferais-je cela? Peut-être soit dans Python ou Perl
Vive
Eef
J'ai un répertoire plein d'images que je voudrais redimensionner à environ 60% de leur taille d'origine.Redimensionner des images dans le répertoire
Comment ferais-je cela? Peut-être soit dans Python ou Perl
Vive
Eef
Comment utiliser mogrify, partie de ImageMagick? Si vous avez vraiment besoin de contrôler cela à partir de Perl, alors vous pouvez utiliser Image::Magick, Image::Resize ou Imager.
J'utilise Python avec PIL (Image Python Library). Bien sûr, il existe des programmes spécialisés pour le faire.
De nombreuses personnes utilisent la PIL pour de telles choses. Regardez: Quick image resizing with python
PIL est très puissant et récemment, j'ai trouvé cette recette: Putting watermark to images in batch
Utilisez PerlMagick, il est une interface à la ImageMagick populaire suite d'outils de ligne de commande pour le faire ce genre de choses. PythonMagic est également disponible.
avez-vous besoin de simplement le redimensionner ou vous souhaitez le redimensionner par programmation? Si juste redimensionner utilisez PixResizer. http://bluefive.pair.com/pixresizer.htm
Peut-il être en coque?
mkdir resized
for a in *.jpg; do convert "$a" -resize 60% resized/"$a"; done
Si vous avez> 1 coeur, vous pouvez le faire comme ceci:
find . -maxdepth 1 -type f -name '*.jpg' -print0 | xargs -0 -P3 -I XXX convert XXX -resize 60% resized/XXX
-P3 signifie que vous voulez redimensionner jusqu'à 3 images en même temps (parallélisation).
Si vous n'avez pas besoin de conserver les originaux, vous pouvez utiliser mogrify, mais je préfère utiliser convert, puis rm ...; MV ... - juste pour être du bon côté si le redimensionnement serait (pour une raison quelconque) échouer.
Merci pour cela, c'était exactement ce que je cherchais. –
Si vous voulez le faire par programme, ce que je suppose est le cas, utilisez PIL pour redimensionner par ex.
newIm = im.resize((newW, newH)
puis de l'enregistrer dans le même fichier ou dans un nouvel emplacement. Parcourez le dossier de manière récursive et appliquez la fonction de redimensionnement à toutes les images.
Je suis venu avec un exemple de script qui, je pense, va travailler pour vous. Vous pouvez améliorer cela: peut-être le rendre graphique, ajouter plus d'options, par ex. même extension ou peut être tout png, redimensionner l'échantillonnage linéaire/bilinéaire etc
import os
import sys
from PIL import Image
def resize(folder, fileName, factor):
filePath = os.path.join(folder, fileName)
im = Image.open(filePath)
w, h = im.size
newIm = im.resize((int(w*factor), int(h*factor)))
# i am saving a copy, you can overrider orginal, or save to other folder
newIm.save(filePath+"copy.png")
def bulkResize(imageFolder, factor):
imgExts = ["png", "bmp", "jpg"]
for path, dirs, files in os.walk(imageFolder):
for fileName in files:
ext = fileName[-3:].lower()
if ext not in imgExts:
continue
resize(path, fileName, factor)
if __name__ == "__main__":
imageFolder=sys.argv[1] # first arg is path to image folder
resizeFactor=float(sys.argv[2])/100.0# 2nd is resize in %
bulkResize(imageFolder, resizeFactor)
Je ne suis pas sûr. Tout d'abord, il ne dit pas que c'est un travail ponctuel. Deuxièmement - "Irfan View" pourrait ne pas être une option - par exemple en raison de contraintes du système d'exploitation. Troisièmement, ImageMagick est si complexe que même l'utiliser comme un outil batch est une sorte de programmation. –