我可以一次将目录中的多个图像调整为 160x160 吗?

我可以一次将目录中的多个图像调整为 160x160 吗?

我想调整存储在目录中多个子文件夹中的多张图片的大小。我想删除原始图片,用调整大小后的图片替换这些图片

为什么?

我在一个单独的分区中存储了大量内容的文件夹图标。其中一些图像大约有 1 兆字节,尺寸为 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。答案应该适用于深的目錄。

其他数据

  • 图像一般.png也是.icns.ico
  • 图像可以存储在非常深的目录中
  • 所有图像的长宽比均为 1:1
  • 所有图像都有名称.folder.extension
  • 有一个在这里回答但我认为它只适用于一张图片

我很乐意提供更多信息

答案1

我找到了一个简单的解决方案,运行以下命令

sudo apt-get install nautilus-image-converter
nautilus -q
  • 现在使用 Nautilus 进入目录
  • 确保Show hidden files已启用
  • 搜索.folder
  • 选择您想要的所有文件
  • 右键单击并选择Resize Images
  • 选择图像大小作为自定义尺寸选项,填充宽度 = 160 和高度 = 160
  • 文件名为就地调整大小
  • Enter

你的图片应该调整为 160

来源


奇怪的是它不起作用.icns

答案2

虽然不是命令行,但是这个 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)

相关内容