Найти - Пользователи
Полная версия: Как вытащить размер изображения?
Начало » Python для новичков » Как вытащить размер изображения?
1 2
oDoDo
 from pathlib import Path
test=sorted(Path("C:/Users/").glob('*.jpg'))   
print (test)

Так получилось но, он указывает полный путь и всё в 1 строке, не понятно как дальше с этим работать, как по очереди их обработать?
doza_and
oDoDo
не понятно как дальше с этим работать, как по очереди их обработать?
oDoDo А вы кто? Мальчик, девочка, сколько вам лет 8 или 80? С вами можно пожестче общаться или помягче?
Сейчас настал момент когда вам надо взять книжку Лутца и прочитать первую главу, поскольку вам не хватает понимания основ. И методика освоения у вас методом тыка. Вы спрашиваете, вам дают отдельные рецепты, но это очень долгий путь поскольку понимания он не дает.
Надо чтобы вам кто-то рассказал что питон это программа которая читает последовательно скрипт и выполняет команды как только их распознает. Что он внутри может хранить переменные и обращается к ним по именам. Переменные бывают разных типов. Строки, числа, списки, словари, итераторы(ваш случай)… Бывают управляющие конструкции for,if,… Если продолжать то тут будет книжка. Причем очевидно хуже чем у Лутца. И все это лучше почитать там.
https://younglinux.info/python/for.php
Приятного чтения.
oDoDo
doza_and
oDoDo А вы кто? Мальчик, девочка, сколько вам лет 8 или 80? С вами можно пожестче общаться или помягче?
А это имеет значение? Тягость знаний ограничена чем то? И идиоты вроде меня не могут задавать интересующие им вопросы? Общайтесь как хотите. Я пользуюсь форумом, чтобы облегчить себе жизнь, да метод обучения ужасный, я знаю фор иф вайл и прочее но мне это понятнее когда они участвуют в задаче которая мне интересна. Мне просто не хватит запаса интереса и времени если я буду изучать азы прочитать кучу статей и книг, пойти на курсы отучиться пол года, чтобы я смог пользоваться итератами и смог одновременно уменьшить все картинки в определенной папке?
Так хотя бы показываете куда смотреть и мне это помогает.
doza_and
oDoDo
А это имеет значение?
Конечно это важно. От этого существенно зависит куда вас посылать. :) Если семилетнее дарование то оно не знает подходов с систематическим изучением учебников, у него нет за плечами опыта университетского курса матанализа или систематической работы за стойкой в ресторане. Тогда имеет смысл послать к учебнику. Если предпенсионное развлечение для души, то тут как я думаю, важен процесс а не результат и время за которое он получен. Тогда достаточно пол строчки от того кому не лень писать, чтобы в сотый раз вывести из тупика.

 for i in Path("C:/Users/").glob('*.jpg'):   
    обработать(i)
def обработать(i):
     .....

да таки питон понимает по русски названия функций. Не делайте так в жизни!


py.user.next
oDoDo
Изображение лежит в папке, нужно сохранить ширину и высоту в разные переменные, как это сделать?
oDoDo
Спасибо, а как брать картинки по очереди из папки и проделывать те же действия?
oDoDo
А как по очереди обработать изображения в папке?
Как указать путь к папке > найти все изображения> создать список > обработать по списку
Вот ты таким образом медленно подходишь к проектированию программы.

wiki. структурная парадигма программирования
Здесь писал про книги.
Здесь писал этапы проектирования программы и любой её части.
Здесь описывал принцип использования функций в структурной парадигме программирования.
Здесь писал пример разработки сверху вниз.
Здесь писал про псевдокод.

Сначала ты программу проектируешь.
1) Делаешь словесное описание всего.
2) Делаешь блок-схему всего по словесному описанию из пункта 1.
3) Пишешь псевдокод всего по блок-схеме из пункта 2.
4) Пишешь код всего по псевдокоду из пункта 3.

Эти этапы должны всегда работать. Как на высоком уровне (макроуровне), так и на низком уровне при разработке каждого кусочка (микроуровне). Сначала, пока ты учишься, ты пишешь их на бумаге во всех мелочах. Ты это делаешь и переделываешь, исправляешь недочёты и улучшаешь результат. Затем многое из этого ты будешь прокручивать в голове на том уровне, до которого научился ранее в процессе тренировок. Но чтобы прокручивать в голове, ты должен хорошо это делать вообще, а достигается это с помощью мучительных тренировок, которые первоначально в голове не проведёшь, только на бумаге. Записал - выбросил - повторил - улучшил.

Пример:
Тебе нужно вычислить сумму квадратов чисел.

Сначала ты всё это проектируешь.

Потом ты пишешь код по своему проекту.
1)
Делаешь набросок кода на самом верхнем уровне, где точка входа находится.
def evaluate_everything():
pass

evaluate_everything()
2)
Уточняешь набросок кода, делаешь заглушку функции и запускаешь весь код.
def evaluate_everything():
return 'result'

result = evaluate_everything()
print(result)
3)
Делаешь набросок кода на уровне ниже точки входа.
def evaluate_everything():
numbers = get_numbers()
squares = get_squares(numbers)
sum_value = get_sum(squares)
out = sum_value
return out

result = evaluate_everything()
print(result)
4)
Уточняешь набросок кода на уровне ниже точки входа, делаешь заглушки функций и запускаешь код.
def get_numbers():
return [1, 2]

def get_squares(numbers):
return [1, 4]

def get_sum(numbers):
return 1 + 4

def evaluate_everything():
numbers = get_numbers()
squares = get_squares(numbers)
sum_value = get_sum(squares)
out = sum_value
return out

result = evaluate_everything()
print(result)
5)
Уточняешь заглушки функций и запускаешь код.
def get_numbers():
return [1, 2, 3, 4, 5, 6, 7, 8, 9]

def get_squares(numbers):
return [i * i for i in numbers]

def get_sum(numbers):
return sum(numbers)

def evaluate_everything():
numbers = get_numbers()
squares = get_squares(numbers)
sum_value = get_sum(squares)
out = sum_value
return out

result = evaluate_everything()
print(result)
6)
Уточняешь заглушки функций на самом нижнем уровне и запускаешь код.
def get_numbers():
return range(1, 10)

def get_squares(numbers):
return (i * i for i in numbers)

def get_sum(numbers):
return sum(numbers)

def evaluate_everything():
numbers = get_numbers()
squares = get_squares(numbers)
sum_value = get_sum(squares)
out = sum_value
return out

result = evaluate_everything()
print(result)
7)
Ищешь, что ещё не сделано, и понимаешь, что сделано всё.
  
>>> def get_numbers():
...     return range(1, 10)
... 
>>> def get_squares(numbers):
...     return (i * i for i in numbers)
... 
>>> def get_sum(numbers):
...     return sum(numbers)
... 
>>> def evaluate_everything():
...     numbers = get_numbers()
...     squares = get_squares(numbers)
...     sum_value = get_sum(squares)
...     out = sum_value
...     return out
... 
>>> result = evaluate_everything()
>>> print(result)
285
>>> 


tags: develop up to down, structured paradigm programming, functions
oDoDo
Всем спасибо, ещё немного продвинулся и снова тупик

 from pathlib import Path
from PIL import Image
k=0
kartinki=sorted(Path("C:/Users/").glob('*.jpg'))+sorted(Path("C:/Users/").glob('*.png'))
def perebor(i):
	k+1
	print(i)
	image = Image.open(i)
	width, height = image.size
	saved = "resize"+k+".jpg" # Задать уникальное имя
	resized_img = image.resize((width, height), Image.ANTIALIAS)
	resized_img.save(saved)
			
for i in kartinki:   
    perebor(i)

Не получается задать уникально имя, как это сделать? Можно только без учебников, пожалуйста)
doza_and
 nm = f"resize{k}.jpg"
py.user.next
Информация для тех, кто сюда переходит из будущих годов (после 2020-го года часто перенаправляю сюда):
Здесь написан пример разработки одной маленькой программы, начиная с пустоты, когда нет ничего, до конечной работающей версии. Чтобы научиться так писать программы (получить такое мышление), нужно прочитать все те материалы, которые даются вместе с этим примером разработки в том сообщении, из которого вы сюда перешли.


oDoDo
Изображение лежит в папке, нужно сохранить ширину и высоту в разные переменные, как это сделать?

Начинаешь отсюда
С пустоты то есть.

Сначала делаешь набросок
def save_size_of_image(inpath, outpath):
pass

save_size_of_image('input path', 'output path')

Потом уточняешь набросок
def save_size_of_image(inpath, outpath):
pass

save_size_of_image(r'C:\Users\pic.jpg', r'C:\Users\pic_output.txt')

Потом делаешь из уточнённого наброска код с функцией заглушкой
def save_size_of_image(inpath, outpath):
print('Processed', inpath)
print('Saved to', outpath)

save_size_of_image(r'C:\Users\pic.jpg', r'C:\Users\pic_output.txt')

Запускаешь код с функцией заглушкой
  
>>> def save_size_of_image(inpath, outpath):
...     print('Processed', inpath)
...     print('Saved to', outpath)
... 
>>> save_size_of_image(r'C:\Users\pic.jpg', r'C:\Users\pic_output.txt')
Processed C:\Users\pic.jpg
Saved to C:\Users\pic_output.txt
>>>

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

Начинаешь отсюда
def save_size_of_image(inpath, outpath):
print('Processed', inpath)
print('Saved to', outpath)

save_size_of_image(r'C:\Users\pic.jpg', r'C:\Users\pic_output.txt')

Сначала делаешь набросок
def save_size_of_image(inpath, outpath):
image = open_image(inpath)
image_size = get_size(image)
close_image(image)
output_file = open_output_file(outpath)
save_image_size_to_output_file(image_size, output_file)
close_output_file(output_file)

save_size_of_image(r'C:\Users\pic.jpg', r'C:\Users\pic_output.txt')

Потом уточняешь набросок
def open_image(path):
pass

def get_size(image):
pass

def close_image(image):
pass

def open_output_file(path):
pass

def save_image_size_to_output_file(image_size, output_file):
pass

def close_output_file(output_file):
pass

def save_size_of_image(inpath, outpath):
image = open_image(inpath)
image_size = get_size(image)
close_image(image)
output_file = open_output_file(outpath)
save_image_size_to_output_file(image_size, output_file)
close_output_file(output_file)

save_size_of_image(r'C:\Users\pic.jpg', r'C:\Users\pic_output.txt')

Делаешь из уточнённого наброска код с функциями заглушками
def open_image(path):
return '[image object]'

def get_size(image):
return (1024, 768)

def close_image(image):
print('image object', str(image), 'closed')

def open_output_file(path):
return '[file object]'

def save_image_size_to_output_file(image_size, output_file):
print('image_size', str(image_size), 'saved to output_file', str(output_file))

def close_output_file(output_file):
print('output file', str(output_file), 'closed')

def save_size_of_image(inpath, outpath):
image = open_image(inpath)
image_size = get_size(image)
close_image(image)
output_file = open_output_file(outpath)
save_image_size_to_output_file(image_size, output_file)
close_output_file(output_file)

save_size_of_image(r'C:\Users\pic.jpg', r'C:\Users\pic_output.txt')

Запускаешь код с функциями заглушками
  
>>> def open_image(path):
...     return '[image object]'
... 
>>> def get_size(image):
...     return (1024, 768)
... 
>>> def close_image(image):
...     print('image object', str(image), 'closed')
... 
>>> def open_output_file(path):
...     return '[file object]'
... 
>>> def save_image_size_to_output_file(image_size, output_file):
...     print('image_size', str(image_size), 'saved to output_file', str(output_file))
... 
>>> def close_output_file(output_file):
...     print('output file', str(output_file), 'closed')
... 
>>> def save_size_of_image(inpath, outpath):
...     image = open_image(inpath)
...     image_size = get_size(image)
...     close_image(image)
...     output_file = open_output_file(outpath)
...     save_image_size_to_output_file(image_size, output_file)
...     close_output_file(output_file)
... 
>>> save_size_of_image(r'C:\Users\pic.jpg', r'C:\Users\pic_output.txt')
image object [image object] closed
image_size (1024, 768) saved to output_file [file object]
output file [file object] closed
>>>

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

Начинаешь отсюда
def open_image(path):
return '[image object]'

def get_size(image):
return (1024, 768)

def close_image(image):
print('image object', str(image), 'closed')

def open_output_file(path):
return '[file object]'

def save_image_size_to_output_file(image_size, output_file):
print('image_size', str(image_size), 'saved to output_file', str(output_file))

def close_output_file(output_file):
print('output file', str(output_file), 'closed')

def save_size_of_image(inpath, outpath):
image = open_image(inpath)
image_size = get_size(image)
close_image(image)
output_file = open_output_file(outpath)
save_image_size_to_output_file(image_size, output_file)
close_output_file(output_file)

save_size_of_image(r'C:\Users\pic.jpg', r'C:\Users\pic_output.txt')

Реализуешь первую функцию заглушку
from PIL import Image


def open_image(path):
image = Image.open(path)
return image

def get_size(image):
return (1024, 768)

def close_image(image):
print('image object', str(image), 'closed')

def open_output_file(path):
return '[file object]'

def save_image_size_to_output_file(image_size, output_file):
print('image_size', str(image_size), 'saved to output_file', str(output_file))

def close_output_file(output_file):
print('output file', str(output_file), 'closed')

def save_size_of_image(inpath, outpath):
image = open_image(inpath)
image_size = get_size(image)
close_image(image)
output_file = open_output_file(outpath)
save_image_size_to_output_file(image_size, output_file)
close_output_file(output_file)

save_size_of_image(r'C:\Users\pic.jpg', r'C:\Users\pic_output.txt')
Можешь запустить код, всё работает.

Реализуешь вторую функцию заглушку
from PIL import Image


def open_image(path):
image = Image.open(path)
return image

def get_size(image):
return image.size

def close_image(image):
print('image object', str(image), 'closed')

def open_output_file(path):
return '[file object]'

def save_image_size_to_output_file(image_size, output_file):
print('image_size', str(image_size), 'saved to output_file', str(output_file))

def close_output_file(output_file):
print('output file', str(output_file), 'closed')

def save_size_of_image(inpath, outpath):
image = open_image(inpath)
image_size = get_size(image)
close_image(image)
output_file = open_output_file(outpath)
save_image_size_to_output_file(image_size, output_file)
close_output_file(output_file)

save_size_of_image(r'C:\Users\pic.jpg', r'C:\Users\pic_output.txt')
Можешь запустить код, всё работает.

Реализуешь третью функцию заглушку
from PIL import Image


def open_image(path):
image = Image.open(path)
return image

def get_size(image):
return image.size

def close_image(image):
image.close()

def open_output_file(path):
return '[file object]'

def save_image_size_to_output_file(image_size, output_file):
print('image_size', str(image_size), 'saved to output_file', str(output_file))

def close_output_file(output_file):
print('output file', str(output_file), 'closed')

def save_size_of_image(inpath, outpath):
image = open_image(inpath)
image_size = get_size(image)
close_image(image)
output_file = open_output_file(outpath)
save_image_size_to_output_file(image_size, output_file)
close_output_file(output_file)

save_size_of_image(r'C:\Users\pic.jpg', r'C:\Users\pic_output.txt')
Можешь запустить код, всё работает.

Реализуешь четвёртую функцию заглушку
from PIL import Image


def open_image(path):
image = Image.open(path)
return image

def get_size(image):
return image.size

def close_image(image):
image.close()

def open_output_file(path):
output_file = open(path, 'w', encoding='utf-8')
return output_file

def save_image_size_to_output_file(image_size, output_file):
print('image_size', str(image_size), 'saved to output_file', str(output_file))

def close_output_file(output_file):
print('output file', str(output_file), 'closed')

def save_size_of_image(inpath, outpath):
image = open_image(inpath)
image_size = get_size(image)
close_image(image)
output_file = open_output_file(outpath)
save_image_size_to_output_file(image_size, output_file)
close_output_file(output_file)

save_size_of_image(r'C:\Users\pic.jpg', r'C:\Users\pic_output.txt')
Можешь запустить код, всё работает.

Реализуешь пятую функцию заглушку
from PIL import Image


def open_image(path):
image = Image.open(path)
return image

def get_size(image):
return image.size

def close_image(image):
image.close()

def open_output_file(path):
output_file = open(path, 'w', encoding='utf-8')
return output_file

def save_image_size_to_output_file(image_size, output_file):
width, height = image_size
print('width:', width, file=output_file)
print('height:', height, file=output_file)

def close_output_file(output_file):
print('output file', str(output_file), 'closed')

def save_size_of_image(inpath, outpath):
image = open_image(inpath)
image_size = get_size(image)
close_image(image)
output_file = open_output_file(outpath)
save_image_size_to_output_file(image_size, output_file)
close_output_file(output_file)

save_size_of_image(r'C:\Users\pic.jpg', r'C:\Users\pic_output.txt')
Можешь запустить код, всё работает.

Реализуешь шестую функцию заглушку
from PIL import Image


def open_image(path):
image = Image.open(path)
return image

def get_size(image):
return image.size

def close_image(image):
image.close()

def open_output_file(path):
output_file = open(path, 'w', encoding='utf-8')
return output_file

def save_image_size_to_output_file(image_size, output_file):
width, height = image_size
print('width:', width, file=output_file)
print('height:', height, file=output_file)

def close_output_file(output_file):
output_file.close()

def save_size_of_image(inpath, outpath):
image = open_image(inpath)
image_size = get_size(image)
close_image(image)
output_file = open_output_file(outpath)
save_image_size_to_output_file(image_size, output_file)
close_output_file(output_file)

save_size_of_image(r'C:\Users\pic.jpg', r'C:\Users\pic_output.txt')
Можешь запустить код, всё работает.

Ищешь, что ещё не сделано, и понимаешь, что сделано всё.

Так как у меня Linux, я меняю просто путь к файлу изображения и путь к файлу вывода.
Делаю запуск кода
  
>>> from PIL import Image
>>> 
>>> 
>>> def open_image(path):
...     image = Image.open(path)
...     return image
... 
>>> def get_size(image):
...     return image.size
... 
>>> def close_image(image):
...     image.close()
... 
>>> def open_output_file(path):
...     output_file = open(path, 'w', encoding='utf-8')
...     return output_file
... 
>>> def save_image_size_to_output_file(image_size, output_file):
...     width, height = image_size
...     print('width:', width, file=output_file)
...     print('height:', height, file=output_file)
... 
>>> def close_output_file(output_file):
...     output_file.close()
... 
>>> def save_size_of_image(inpath, outpath):
...     image = open_image(inpath)
...     image_size = get_size(image)
...     close_image(image)
...     output_file = open_output_file(outpath)
...     save_image_size_to_output_file(image_size, output_file)
...     close_output_file(output_file)
... 
>>> save_size_of_image('d/pic.png', 'd/pic_output.txt')
>>>

Смотрю в директорию d.
[guest@localhost img_size_save]$ ls
d
[guest@localhost img_size_save]$ ls d
pic_output.txt pic.png
[guest@localhost img_size_save]$ cat d/pic_output.txt
width: 1024
height: 768
[guest@localhost img_size_save]$
Всё сработало. Изображение проанализировано, данные о его размере появились во вновь созданном текстовом файле.


tags: develop up to down, structured paradigm programming, functions
xam1816

py.user.next
Очень хорошая подача информации,спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB