最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

批量處理照片軟件

2023-07-19 14:45 作者:看看直播哦  | 我要投稿

批量處理照片軟件

實現(xiàn)功能:

1、指定大小

2、指定照片保存KB大小

3、照片處理日志

無法轉(zhuǎn)換背景顏色,我的算法比較落后效果不好。

我只提供源碼,封裝程序不提供,有能力的可以自己動手,python。

照片處理工具

使用說明:

一、把照片放在原始照片文件夾中

?二、直接運行程序

?三、選擇你需要的照片尺寸,輸出數(shù)字再回車。1-3是已經(jīng)設(shè)計好尺寸,即為顯示尺寸。4是自己輸入尺寸,選擇4后自己手動輸入尺寸,格式為 ?100x200 ?x是小寫X?


四、選擇你需要照片的最大KB,輸出數(shù)字再回車。如小于100則可以寫99?


五、批量輸出照片的照片在輸出文件夾中查看。要看下日志,看是否有沒轉(zhuǎn)成功的,以及照片最終大小。部分照片可能會超過要求的KB,日志都有記錄。

??提示一:該程序無法更換背景顏色,只能批量輸出標(biāo)準(zhǔn)尺寸照片,以及限定KB。更換底色可以在微信小程序標(biāo)準(zhǔn)證件照中完成。

?提示二:水平有限,發(fā)現(xiàn)當(dāng)自定義很怪的參數(shù),會有部分照片轉(zhuǎn)換失敗,比如size:1000x2500,大小只允許50kb,推測報錯的原因無法生成只有50kb以內(nèi)的這么大的照片。當(dāng)然沒轉(zhuǎn)成功的都可以查看日志,手動去專業(yè)軟件轉(zhuǎn)。

???升級日志:

V1.3

增加指定照片小于KB數(shù)量

V1.2

1、增強適配性,輸出照片的尺寸可以手動選擇和自定尺寸輸出。

?

V1.1升級文檔

1、解決原始照片無法打開報錯問題。

2、加入運行日記,記錄運行過程,修改圖片失敗的圖片名字。保存在輸出照片文件中。運行日志如下:

?

Pythony源碼: ?V1.3版本

from PIL import Image

import os

import logging

import sys

import time

?

def resize_images(input_folder_path, output_folder_path, size, max_size_kb):

????if not os.path.exists(output_folder_path):

????????os.mkdir(output_folder_path)

?

????logger = logging.getLogger(__name__)

????logger.setLevel(logging.INFO)

?

????file_handler = logging.FileHandler(os.path.join(output_folder_path, "運行日志.csv"))

????file_handler.setLevel(logging.INFO)

?

????formatter = logging.Formatter('%(message)s')

????file_handler.setFormatter(formatter)

?

????logger.addHandler(file_handler)

?

????processed_count = 0

????skipped_count = 0

????error_count = 0

????output_size_kb_count = 0

?

????for filename in os.listdir(input_folder_path):

????????input_image_path = os.path.join(input_folder_path, filename)

?

????????valid_extensions = ('.jpg', '.jpeg', '.png', '.bmp', '.gif')

????????if not input_image_path.lower().endswith(valid_extensions):

????????????skipped_count += 1

????????????logger.info(f"已經(jīng)處理 {filename}")

????????????continue

?

????????try:

????????????with Image.open(input_image_path) as original_image:

????????????????width, height = original_image.size

?

????????????????resized_image = original_image.resize(size)

????????????????output_image_path = os.path.join(output_folder_path, os.path.splitext(filename)[0] + '.jpg')

?

????????????????# 檢查輸出文件大小是否超過指定大小,如果超過則降低質(zhì)量

????????????????while os.path.exists(output_image_path) and os.path.getsize(output_image_path) > max_size_kb * 1024:

????????????????????quality = resized_image.info['quality']

????????????????????if quality > 5:

????????????????????????quality -= 5

????????????????????resized_image.save(output_image_path, 'JPEG', quality=quality)

????????????????else:

????????????????????try:

????????????????????????resized_image.save(output_image_path, 'JPEG')

????????????????????except OSError:

????????????????????????output_image_path = os.path.join(output_folder_path, os.path.splitext(filename)[0] + '.png')

????????????????????????resized_image.save(output_image_path, 'PNG')

????????????????????????with Image.open(output_image_path) as png_img:

????????????????????????????if png_img.format == 'PNG':

?

????????????????????????????????if png_img.mode != 'RGB':

????????????????????????????????????png_img = png_img.convert('RGB')

?

????????????????????????????????os.remove(output_image_path)

????????????????????????????????output_image_path = os.path.splitext(output_image_path)[0] + '.jpg'

????????????????????????????????png_img.save(output_image_path, 'JPEG')

????????????????output_size_kb = os.path.getsize(output_image_path) / 1024

????????????????if output_size_kb > max_size_kb:

????????????????????output_size_kb_count += 1

????????????????????logger.info(f"已經(jīng)處理 {filename}({output_size_kb:.2f} KB),KB已經(jīng)無法再降")

????????????????else:

????????????????????logger.info(f"已經(jīng)處理 {filename}({output_size_kb:.2f} KB)")

????????????????processed_count += 1

????????except Exception as e:

????????????error_count += 1

????????????logger.error(f"錯誤圖片 {filename}")

?

????logger.info(f"已經(jīng)處理 {processed_count} 照片, ?KB超標(biāo) { output_size_kb_count} 張照片,未讀取 {skipped_count} 照片, 發(fā)現(xiàn) {error_count} 錯誤圖片.")

?

?

????print(f"已經(jīng)處理 {processed_count} 照片, KB超標(biāo) { output_size_kb_count} 張照片,未讀取 {skipped_count} 照片, 發(fā)現(xiàn) {error_count} 錯誤圖片。詳細(xì)信息請查看日志文件。")

?

if __name__ == '__main__':

????input_folder_path = os.path.join(os.getcwd(), '原始照片')

????output_folder_path = os.path.join(os.getcwd(), '輸出照片')

?

????print("請選擇要使用的尺寸選項:")

????print("1. 295x413 (1寸照片)")

????print("2. 413x579 (2寸照片)")

????print("3. 413x626 (大2寸照片)")

????print("4. 自定義尺寸")

?

????while True:

????????try:

????????????size_option = int(input("請輸入選項數(shù)字: "))

????????????if size_option in [1, 2, 3, 4]:

????????????????break

????????????else:

????????????????print("無效選項,請重新輸入。")

????????except ValueError:

????????????print("無效選項,請重新輸入。")

?

????if size_option == 1:

????????size = (295, 413)

????elif size_option == 2:

????????size = (413, 579)

????elif size_option == 3:

????????size = (413, 626)

????elif size_option == 4:

????????while True:

????????????try:

????????????????size_str = input("請輸入自定義尺寸(格式:100x100,x是小寫):")

????????????????width, height = map(int, size_str.split('x'))

????????????????size = (width, height)

????????????????break

????????????except ValueError:

????????????????print("無效的尺寸選項,請重新輸入。")

????else:

????????print("請重新啟動程序")

????????sys.exit(1)

?

????while True:

????????try:

????????????max_size_kb = int(input("請輸入輸出照片的最大大?。▎挝唬篕B): "))

????????????break

????????except ValueError:

????????????print("無效的大小選項,請重新輸入。")

?

????try:

????????resize_images(input_folder_path, output_folder_path, size, max_size_kb)

????except Exception as e:

????????logging.error(f"處理照片時出錯: {str(e)}")

????????print("處理照片時出錯,請查看日志文件獲取更多信息。")

????????sys.exit(1)

?

time.sleep(6)


批量處理照片軟件的評論 (共 條)

分享到微博請遵守國家法律
日土县| 临桂县| 双城市| 重庆市| 湘乡市| 遂昌县| 庄浪县| 全椒县| 云浮市| 麻栗坡县| 河源市| 金平| 吴旗县| 宜丰县| 界首市| 都匀市| 吉安县| 施秉县| 三亚市| 乌兰察布市| 寿宁县| 师宗县| 安溪县| 崇文区| 东阿县| 元阳县| 萍乡市| 清水县| 大渡口区| 固镇县| 四平市| 临汾市| 郁南县| 西城区| 乐东| 稷山县| 繁昌县| 灵山县| 兴化市| 四平市| 三门县|