Je souhaite redimensionner plusieurs images stockées dans plusieurs sous-dossiers d'un répertoire. Et je veux remplacer ces images par des images redimensionnées en supprimant celles d'origine
Pourquoi?
J'ai des icônes de dossier pour beaucoup de contenu dans une partition séparée. Certaines de ces images tournent autour d’un mégaoctet et mesurent 500 x 500, ce qui, à mon avis, est excessif pour les icônes de dossier sur un écran 1080p. Je pense que cela réduit également les performances de Nautilus et occupe un espace précieux.
Comment est la structure du dossier?
├── [4.0K] Zombieland (2009) H
│ ├── [664K] .folder.png
│ └── [606M] Zombieland (2009) H.mkv
└── [4.0K] Zootopia (2016)
├── [203K] .folder.png
├── [2.7G] Zootopia (2016).mkv
└── [119K] Zootopia (2016).srt
Je veux que ces .folder.png
‘soient redimensionnés à 160x160. Answer devrait fonctionner sur les répertoires Deep .
Autre informations
.png
mais aussi .icns
, .ico
.folder.extension
Je serai heureux de fournir plus d'informations
J'ai trouvé une solution facile, lancez les commandes suivantes
Sudo apt-get install nautilus-image-converter
nautilus -q
Show hidden files
est activé.folder
Vos images doivent être redimensionnées à 160
Étrangement, cela n'a pas fonctionné sur .icns
Pas en ligne de commande, mais ce script python devrait faire le travail pour vous :)
exécutez-le dans le répertoire racine que vous souhaitez affecter.
import PIL,os,glob
DIMENSIONS = (160,160)
FILETYPES = ['*.ico','*.icns','*.png']
def get_pictures_from_directory(subject_path,filetypes):
lst = []
for extension in filetypes:
lst.extend(glob.glob(subject_path+"/"+extension))
return (lst)
def get_folders_in_curr_directory(directory):
return ([d for d in os.listdir(directory) if os.path.isdir(os.path.join(directory, d))])
def load_and_resize_image(img_path,size_Tuple):
img = PIL.Image.open(img_path)
img = img.resize(size_Tuple)
return (img)
def save_image(img,img_path):
img.save(img_path)
def resize_pictures(pictures,DIMENSIONS):
for picture in pictures:
img = load_and_resize_image(picture,DIMENSIONS)
save_image(img,picture)
def run_recursive_resize(base_path,DIMENSIONS,FILETYPES):
directories = get_folders_in_curr_directory(base_path)
pictures = get_pictures_from_directory(base_path,FILETYPES)
resize_pictures(pictures,DIMENSIONS)
for directory in directories:
next_path = base_path +'/'+ directory
run_recursive_resize(next_path,DIMENSIONS,FILETYPES)
run_recursive_resize('.',DIMENSIONS,FILETYPES)