Можно ли одновременно изменить размер нескольких изображений в каталоге до 160x160? [дубликат]

На этот вопрос уже есть ответ здесь:

Я хочу изменить размер нескольких сохраненных изображений в нескольких подпапках в каталоге. И я хочу заменить эти изображения на изображения с измененным размером, удалив исходные

Почему?

У меня есть значки папок для большого количества контента в отдельном разделе. Некоторые из этих изображений имеют размер около мегабайта и 500x500, что, на мой взгляд, является излишним для значков папок на дисплее 1080p, и я думаю, что это также снижает производительность nautilus и занимает некоторое ценное пространство

Как устроена структура папок?

├── [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

Я хочу, чтобы размер этих .folder.png был изменен до 160x160. Ответ должен работать в каталогах Deep .

Другие данные

  • Изображения обычно имеют формат .png , но также .icns , .ico
  • Изображения могут храниться в очень глубоких каталогах
  • все изображения имеют соотношение сторон 1: 1
  • все изображения имеют имя .folder.extension
  • Здесь есть ответ , но я думаю, что он работает только с одним изображением

Я буду рад предоставить дополнительную информацию

5
задан 21 August 2019 в 04:42

2 ответа

Я нашел легкое решение, выполните эти после команд

sudo apt-get install nautilus-image-converter
nautilus -q
  • Теперь перейдите к каталогу с помощью Наутилуса
  • Удостовериться Show hidden files включен
  • Сделайте поиск .folder
  • Выберите все файлы, Вы хотите
  • Щелкните правой кнопкой и выбор Изменяют размер Изображений
  • Выберите размер изображения как пользовательскую опцию размера и ширину заливки = 160 и Высота = 160
  • И имя файла, как Изменяют размер на месте
  • Нажмите Enter

Ваши изображения должны быть изменены к 160

Источник


Странно это не продолжало работать .icns

4
ответ дан 23 November 2019 в 09:20

Не командная строка, но этот сценарий Python должна сделать задание для Вас :)

выполните его в корневом каталоге, на который Вы хотите влиять.

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)
1
ответ дан 23 November 2019 в 09:20

Другие вопросы по тегам:

Похожие вопросы: