Hướng dẫn resize a list python - thay đổi kích thước danh sách python

45

Nội dung chính ShowShow

  • Làm thế nào để tôi thay đổi kích thước một danh sách các bức ảnh?
  • Làm thế nào để bạn thay đổi kích thước một hình ảnh theo tỷ lệ trong Python?
  • Làm thế nào để bạn thay đổi kích thước một hình ảnh trong Python Pil?
  • Làm thế nào để tôi thay đổi kích thước một hình ảnh trong các thuộc tính?
  • Làm cách nào để có được kích thước của một hình ảnh trong Python?

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.Learn more.
Learn more.

Tôi có mã sau mà tôi nghĩ sẽ thay đổi kích thước hình ảnh trong đường dẫn được chỉ định nhưng khi tôi chạy nó, không có gì hoạt động và Python không gây ra bất kỳ lỗi nào nên tôi không biết phải làm gì. Xin vui lòng tư vấn. Cảm ơn.

from PIL import Image
import os, sys

path = ('C:\Users\Maxxie\color\complete')

def resize():
for item in os.listdir(path):
    if os.path.isfile(item):
        im = Image.open(item)
        f, e = os.path.splitext(item)
        imResize = im.resize((200,200), Image.ANTIALIAS)
        imResize.save(f + ' resized.jpg', 'JPEG', quality=90)

resize()

Đã hỏi ngày 2 tháng 2 năm 2014 lúc 23:52Feb 2, 2014 at 23:52Feb 2, 2014 at 23:52

Hướng dẫn resize a list python - thay đổi kích thước danh sách python

#!/usr/bin/python
from PIL import Image
import os, sys

path = "/root/Desktop/python/images/"
dirs = os.listdir( path )

def resize():
    for item in dirs:
        if os.path.isfile(path+item):
            im = Image.open(path+item)
            f, e = os.path.splitext(path+item)
            imResize = im.resize((200,200), Image.ANTIALIAS)
            imResize.save(f + ' resized.jpg', 'JPEG', quality=90)

resize()

Sai lầm của bạn là thuộc về đường dẫn đầy đủ của các tập tin. Thay vì mục phải là đường dẫn+vật phẩmitem must be path+itemitem must be path+item

Đã trả lời ngày 3 tháng 2 năm 2014 lúc 2:53Feb 3, 2014 at 2:53Feb 3, 2014 at 2:53

7

Trong trường hợp bạn muốn giữ cùng một tỷ lệ khung hình của hình ảnh, bạn có thể sử dụng tập lệnh này.

from PIL import Image
import os, sys

path = "/path/images/"
dirs = os.listdir( path )
final_size = 244;

def resize_aspect_fit():
    for item in dirs:
         if item == '.DS_Store':
             continue
         if os.path.isfile(path+item):
             im = Image.open(path+item)
             f, e = os.path.splitext(path+item)
             size = im.size
             ratio = float(final_size) / max(size)
             new_image_size = tuple([int(x*ratio) for x in size])
             im = im.resize(new_image_size, Image.ANTIALIAS)
             new_im = Image.new("RGB", (final_size, final_size))
             new_im.paste(im, ((final_size-new_image_size[0])//2, (final_size-new_image_size[1])//2))
             new_im.save(f + 'resized.jpg', 'JPEG', quality=90)
resize_aspect_fit()

Đã trả lời ngày 26 tháng 5 năm 2018 lúc 20:26May 26, 2018 at 20:26May 26, 2018 at 20:26

John Frankejohn FrankeJohn FrankeJohn Franke

1.29417 Huy hiệu bạc22 Huy hiệu đồng17 silver badges22 bronze badges17 silver badges22 bronze badges

Giải pháp của John Ottenlips đã tạo ra hình ảnh với đường viền màu đen ở trên/dưới tôi nghĩ vì anh ấy đã sử dụng

  Image.new("RGB", (final_size, final_size))

tạo ra một hình ảnh mới vuông với Final_Size là kích thước, ngay cả khi hình ảnh gốc không phải là một hình vuông.

Điều này khắc phục vấn đề và, theo tôi, làm cho giải pháp rõ ràng hơn một chút:

from PIL import Image
import os

path = "C:/path/needs/to/end/with/a/"
resize_ratio = 0.5  # where 0.5 is half size, 2 is double size

def resize_aspect_fit():
    dirs = os.listdir(path)
    for item in dirs:
        if item == '.jpg':
            continue
        if os.path.isfile(path+item):
            image = Image.open(path+item)
            file_path, extension = os.path.splitext(path+item)

            new_image_height = int(image.size[0] / (1/resize_ratio))
            new_image_length = int(image.size[1] / (1/resize_ratio))

            image = image.resize((new_image_height, new_image_length), Image.ANTIALIAS)
            image.save(file_path + "_small" + extension, 'JPEG', quality=90)


resize_aspect_fit()

Đã trả lời ngày 24 tháng 7 năm 2019 lúc 14:03Jul 24, 2019 at 14:03Jul 24, 2019 at 14:03

Andrei M.andrei M.Andrei M.Andrei M.

1501 Huy hiệu bạc8 Huy hiệu đồng1 silver badge8 bronze badges1 silver badge8 bronze badges

Mở rộng trên giải pháp tuyệt vời của @Sanjar Stone

Để bao gồm các thư mục con và cũng tránh các cảnh báo DS, bạn có thể sử dụng thư viện GLOB:

from PIL import Image
import os, sys
import glob

root_dir = "/.../.../.../"


for filename in glob.iglob(root_dir + '**/*.jpg', recursive=True):
    print(filename)
    im = Image.open(filename)
    imResize = im.resize((28,28), Image.ANTIALIAS)
    imResize.save(filename , 'JPEG', quality=90)

Đã trả lời ngày 10 tháng 6 năm 2019 lúc 13:09Jun 10, 2019 at 13:09Jun 10, 2019 at 13:09

Sivisivisivisivi

10.1k2 Huy hiệu vàng49 Huy hiệu bạc 50 Huy hiệu Đồng2 gold badges49 silver badges50 bronze badges2 gold badges49 silver badges50 bronze badges

3

Mã này chỉ hoạt động để tôi thay đổi kích thước hình ảnh ..

from PIL import Image
import glob
import os

# new folder path (may need to alter for Windows OS)
# change path to your path
path = 'yourpath/Resized_Shapes' #the path where to save resized images
# create new folder
if not os.path.exists(path):
    os.makedirs(path)

# loop over existing images and resize
# change path to your path
for filename in glob.glob('your_path/*.jpg'): #path of raw images
    img = Image.open(filename).resize((306,306))
    # save resized images to new folder with existing filename
    img.save('{}{}{}'.format(path,'/',os.path.split(filename)[1]))

Đã trả lời ngày 22 tháng 3 năm 2020 lúc 23:41Mar 22, 2020 at 23:41Mar 22, 2020 at 23:41

Đối với những người trên Windows:

from PIL import Image
import glob

image_list = []
resized_images = []

for filename in glob.glob('YOURPATH\\*.jpg'):
    print(filename)
    img = Image.open(filename)
    image_list.append(img)

for image in image_list:
    image = image.resize((224, 224))
    resized_images.append(image)

for (i, new) in enumerate(resized_images):
    new.save('{}{}{}'.format('YOURPATH\\', i+1, '.jpg'))

Đã trả lời ngày 4 tháng 5 năm 2020 lúc 9:47May 4, 2020 at 9:47May 4, 2020 at 9:47

RaevelraevelRaevelRaevel

5494 Huy hiệu bạc4 Huy hiệu đồng4 silver badges4 bronze badges4 silver badges4 bronze badges

Mất mã nặng từ @sanjar Stone. Mã này hoạt động tốt trong hệ điều hành Windows. Có thể được sử dụng để cồng kềnh thay đổi kích thước hình ảnh và lắp ráp trở lại thư mục con tương ứng của nó.

Original folder with it subdir:
..\DATA\ORI-DIR
├─Apolo
├─Bailey
├─Bandit
├─Bella

Thư mục mới với Subdir của nó:

..\DATA\NEW-RESIZED-DIR
├─Apolo
├─Bailey
├─Bandit
├─Bella

Liên kết Gist: https://gist.github.com/justudin/2c1075cc4fd4424cb8ba703a2527958b

#!/usr/bin/python
from PIL import Image
import os, sys

path = "/root/Desktop/python/images/"
dirs = os.listdir( path )

def resize():
    for item in dirs:
        if os.path.isfile(path+item):
            im = Image.open(path+item)
            f, e = os.path.splitext(path+item)
            imResize = im.resize((200,200), Image.ANTIALIAS)
            imResize.save(f + ' resized.jpg', 'JPEG', quality=90)

resize()
0

Đã trả lời ngày 27 tháng 10 năm 2020 lúc 5:37Oct 27, 2020 at 5:37Oct 27, 2020 at 5:37

Justudinjustudinjustudinjustudin

Huy hiệu bạc 1311 Bạc7 Huy hiệu đồng1 silver badge7 bronze badges1 silver badge7 bronze badges

Đã mở rộng câu trả lời của Andrei M. để chỉ thay đổi chiều cao của hình ảnh và tự động kích thước chiều rộng.

#!/usr/bin/python
from PIL import Image
import os, sys

path = "/root/Desktop/python/images/"
dirs = os.listdir( path )

def resize():
    for item in dirs:
        if os.path.isfile(path+item):
            im = Image.open(path+item)
            f, e = os.path.splitext(path+item)
            imResize = im.resize((200,200), Image.ANTIALIAS)
            imResize.save(f + ' resized.jpg', 'JPEG', quality=90)

resize()
1

Đã trả lời ngày 1 tháng 11 năm 2020 lúc 9:32Nov 1, 2020 at 9:32Nov 1, 2020 at 9:32

Nếu bạn muốn thay đổi kích thước bất kỳ hình ảnh nào từ một thư mục không có tệp hình ảnh, các tệp khác cũng tồn tại, thì bạn có thể thử điều này:

#!/usr/bin/python
from PIL import Image
import os, sys

path = "/root/Desktop/python/images/"
dirs = os.listdir( path )

def resize():
    for item in dirs:
        if os.path.isfile(path+item):
            im = Image.open(path+item)
            f, e = os.path.splitext(path+item)
            imResize = im.resize((200,200), Image.ANTIALIAS)
            imResize.save(f + ' resized.jpg', 'JPEG', quality=90)

resize()
2

Đã trả lời ngày 21 tháng 9 lúc 10:11Sep 21 at 10:11Sep 21 at 10:11

Làm thế nào để tôi thay đổi kích thước một danh sách các bức ảnh?

Chọn một nhóm hình ảnh với chuột của bạn, sau đó nhấp chuột phải vào chúng. Trong menu bật lên, chọn cách thay đổi kích thước hình ảnh. Một cửa sổ bổ sung hình ảnh sẽ mở. Chọn kích thước hình ảnh mà bạn muốn từ danh sách (hoặc nhập kích thước tùy chỉnh), chọn các tùy chọn bạn muốn, sau đó nhấp vào Thay đổi kích thước.

Làm thế nào để bạn thay đổi kích thước một hình ảnh theo tỷ lệ trong Python?

Cách thay đổi kích thước hình ảnh theo tỷ lệ khung hình cố định với thư viện PIL của Python...

Dòng đầu tiên: Xác định một số cố định để tạo tỷ lệ ..

Dòng thứ hai: Mở hình ảnh ..

Dòng thứ ba: Tạo phần trăm chiều cao theo giá trị cố định của bạn ..

Dòng thứ tư: Tạo chiều rộng hình ảnh bằng cách nhân nó với giá trị chiều cao tỷ lệ ..

Làm thế nào để bạn thay đổi kích thước một hình ảnh trong Python Pil?

Để thay đổi kích thước một hình ảnh, bạn gọi phương thức thay đổi kích thước () trên nó, chuyển theo đối số tuple hai số nguyên đại diện cho chiều rộng và chiều cao của hình ảnh thay đổi kích thước.Hàm không sửa đổi hình ảnh đã sử dụng;Thay vào đó, nó trả về một hình ảnh khác với kích thước mới.call the resize() method on it, passing in a two-integer tuple argument representing the width and height of the resized image. The function doesn't modify the used image; it instead returns another Image with the new dimensions.call the resize() method on it, passing in a two-integer tuple argument representing the width and height of the resized image. The function doesn't modify the used image; it instead returns another Image with the new dimensions.

Làm thế nào để tôi thay đổi kích thước một hình ảnh trong các thuộc tính?

Chọn ảnh để thay đổi kích thước từ thư viện ảnh Windows, nhấp vào "Chỉnh sửa", từ nhóm thuộc tính, sau đó nhấp vào "Thay đổi kích thước".click "Edit," from the Properties group, and then click "Resize."click "Edit," from the Properties group, and then click "Resize."

Làm cách nào để có được kích thước của một hình ảnh trong Python?

Open () được sử dụng để mở hình ảnh và sau đó là thuộc tính của hình ảnh được sử dụng để có được chiều cao và chiều rộng của hình ảnh.width and .height property of Image are used to get the height and width of the image. width and . height property of Image are used to get the height and width of the image.