ディレクトリ内の複数のサブフォルダーに保存されている複数の画像のサイズを変更したい。元の画像を削除して、これらの画像をサイズ変更した画像に置き換えたい
なぜ?
別のパーティションに多くのコンテンツのアイコンをフォルダーに入れました。これらの画像の一部は1メガバイトで500x500であり、1080pディスプレイ上のフォルダーアイコンが多すぎると思います。また、ノーチラスのパフォーマンスを低下させ、貴重なスペースを占有していると思います
フォルダ構造はどうですか?
├── [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
もあります.folder.extension
詳細情報を提供させていただきます
私は簡単な解決策を見つけました、これらの次のコマンドを実行します
Sudo apt-get install nautilus-image-converter
nautilus -q
Show hidden files
が有効になっていることを確認してください.folder
を検索します画像のサイズを160に変更する必要があります
奇妙なことに、.icns
では機能しませんでした
コマンドラインではありませんが、この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)