Nano Hash - криптовалюты, майнинг, программирование

Автоматическое изменение размера изображения в Pillow

Я хочу, чтобы все изображения в данном каталоге имели одинаковый размер. Вот что у меня есть:

import PIL
import os
import math

from PIL import Image

dirPath = r"C:\\a"
dirList = os.listdir(dirPath)
outPath = r"C:\\b"

im_new = Image.new('RGB', (124,90), 'white')
new_w = 124
new_h = 90

for (dirname, dirs, files) in os.walk(dirPath):
    for filename in files:
        print("Opening:"+filename)
        thefile = os.path.join(dirname,filename)
        im = Image.open(thefile)

        old_w, old_h = im.size

        x1 = int(math.floor((new_w - old_w) / 2))
        y1 = int(math.floor((new_h - old_h) / 2))

        im_new.paste(im, (x1, y1, x1 + old_w, y1 + old_h))

        print("Saving:"+filename)
        outfile = os.path.join(outPath,filename)
        im_new.save(outfile, "PNG")


print("Done!")

Дело в том, что он не зацикливается правильно. Вместо того, чтобы зафиксировать изображение на белом фоне, он просто перебрасывает предыдущие на следующие. Надеюсь, это имеет смысл.


Ответы:


1

im_new создается вне цикла, поэтому у вас всегда будет только один. Изменения, внесенные в него в одной итерации цикла, видны в последующих итерациях. Вместо этого попробуйте создать его внутри цикла.

for (dirname, dirs, files) in os.walk(dirPath):
    for filename in files:
        im_new = Image.new('RGB', (124,90), 'white')
        #...
07.08.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..