簡體   English   中英

調整文件夾中多個圖像的大小 (Python)

[英]Resize multiple images in a folder (Python)

我已經看到了建議的示例,但其中一些不起作用。

所以,我有這個代碼似乎對一張圖像工作正常:

im = Image.open('C:\\Users\\User\\Desktop\\Images\\2.jpg') # image extension *.png,*.jpg
new_width  = 1200
new_height = 750
im = im.resize((new_width, new_height), Image.ANTIALIAS)
im.save('C:\\Users\\User\\Desktop\\resized.tif') # .jpg is deprecated and raise error....

如何迭代它並調整多個圖像的大小? 需要保持縱橫比。

謝謝

# Resize all images in a directory to half the size.
#
# Save on a new file with the same name but with "small_" prefix
# on high quality jpeg format.
#
# If the script is in /images/ and the files are in /images/2012-1-1-pics
# call with: python resize.py 2012-1-1-pics

import Image
import os
import sys

directory = sys.argv[1]

for file_name in os.listdir(directory):
print("Processing %s" % file_name)
image = Image.open(os.path.join(directory, file_name))

x,y = image.size
new_dimensions = (x/2, y/2) #dimension set here
output = image.resize(new_dimensions, Image.ANTIALIAS)

output_file_name = os.path.join(directory, "small_" + file_name)
output.save(output_file_name, "JPEG", quality = 95)

print("All done")

它說的地方

new_dimensions = (x/2, y/2)

你可以設置你想要的任何尺寸值,例如,如果你想要 300x300,那么像下面的代碼行一樣更改代碼

new_dimensions = (300, 300)

我假設您想遍歷特定文件夾中的圖像。

你可以這樣做:

import os
from datetime import datetime

for image_file_name in os.listdir('C:\\Users\\User\\Desktop\\Images\\'):
    if image_file_name.endswith(".tif"):
        now = datetime.now().strftime('%Y%m%d-%H%M%S-%f')

        im = Image.open('C:\\Users\\User\\Desktop\\Images\\'+image_file_name)
        new_width  = 1282
        new_height = 797
        im = im.resize((new_width, new_height), Image.ANTIALIAS)
        im.save('C:\\Users\\User\\Desktop\\test_resize\\resized' + now + '.tif')

datetime.now()只是為了使圖像名稱唯一。 這只是我首先想到的一個黑客。 你可以做點別的。 這是必要的,以免相互覆蓋。

我假設您在某個文件夾中有一個圖像列表,並且您可以調整所有圖像的大小

from PIL import Image
import os

    source_folder = 'path/to/where/your/images/are/located/'
    destination_folder = 'path/to/where/you/want/to/save/your/images/after/resizing/'
    directory = os.listdir(source_folder)
    
    for item in directory:
        img = Image.open(source_folder + item)
        imgResize = img.resize((new_image_width, new_image_height), Image.ANTIALIAS)
        imgResize.save(destination_folder + item[:-4] +'.tif', quality = 90)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM