ひさびさにYahooちゃんとやろうと思ったのですが画像周りが相変わらず面倒
25MB未満のZIPにまとめればある程度一括でUPできるっていう部分について。
フリーソフトもなくなったりしてるので、対処するコードです。
Pythonです。
フォルダ内の画像を25MB未満のZIPにまとめていくコード
import os
import zipfile
folder_path = '圧縮したい画像が入っているフォルダパス'
def create_zip_files(folder_path, zip_size_limit):
"""
指定されたフォルダ内のすべての画像ファイルを、指定されたサイズ制限をもとに
ZIPファイルにまとめます。
:param folder_path: 画像ファイルが格納されているフォルダのパス
:param zip_size_limit: 1つのZIPファイルに含めることができる最大サイズ(バイト単位)
"""
file_list = []
for filename in os.listdir(folder_path):
if filename.endswith('.jpg') or filename.endswith('.png'):
file_list.append(os.path.join(folder_path, filename))
zip_file_count = 1
current_zip_size = 0
current_zip_files = []
for file_path in file_list:
file_size = os.path.getsize(file_path)
if current_zip_size + file_size > zip_size_limit:
# 現在のZIPファイルのサイズ制限を超えた場合は、新しいZIPファイルを作成する
with zipfile.ZipFile(os.path.join(folder_path, f'yahoo_photos_{zip_file_count}.zip'), 'w') as zip_file:
for f in current_zip_files:
zip_file.write(f, os.path.basename(f))
current_zip_files = []
current_zip_size = 0
zip_file_count += 1
current_zip_files.append(file_path)
current_zip_size += file_size
# 最後に残ったファイルをZIPファイルにまとめる
with zipfile.ZipFile(os.path.join(folder_path, f'yahoo_photos_{zip_file_count}.zip'), 'w') as zip_file:
for f in current_zip_files:
zip_file.write(f, os.path.basename(f))
zip_size_limit = 25 * 1024 * 1024 # 25MB
create_zip_files(folder_path, zip_size_limit)
コードの使い方
圧縮したい画像が入っているフォルダパス のとこに
D:\yahoo みたいなフォルダパスを入れてください。
あとは実行すればOK
jupyterslabとかで実行してください。