Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 15, 2018 16:49:29

dmitriigoog
Зарегистрирован: 2018-02-15
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как узнать разрешение изображения по URL, используя python-2.7?

Имеется список URL'ов картинок форматов jpg, jpeg, png (около 100к шт.). Необходимо без загрузки узнать: не меньше ли это изображение чем 640х480

Отредактировано dmitriigoog (Фев. 15, 2018 17:35:25)

Офлайн

#2 Фев. 16, 2018 11:03:55

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Как узнать разрешение изображения по URL, используя python-2.7?

 import urllib
>>> url=urllib.urlopen('http://python.su')
>>> url.headers.keys()
['content-length', 'vary', 'server', 'connection', 'date', 'content-type']
>>> url.headers['content-length']
'96309'

Далее, нужно загрузить, скажем, 100 изображений различных. Найти минимальный размер в байтах того из этих изображений, которое больше 640x480. Найти долю изображений по размеру больших найденного минимального размера, но не являющиеся большими 640x480 (9000x90 например не является большим, т.к. 90<480).
Если размер в байтах у проверяемого изображения больше найденного минимального, то можно считать, что он больше 640x480 с ошибкой приблизительно равной найденной доли

Многое, однако, в этом случае, зависит от 100 тестовых изображений, насколько они репрезентативны в отношении 100k изображений, которые планируется проверять.



Отредактировано scidam (Фев. 16, 2018 11:26:39)

Офлайн

#3 Фев. 16, 2018 11:45:25

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Как узнать разрешение изображения по URL, используя python-2.7?

> Далее, нужно загрузить, скажем, 100 изображений различных

ТС ничего загружать не хочет. Он думает что разрешение передаётся по интернет-протоколу.

> Найти минимальный размер в байтах того из этих изображений, которое больше 640x480…Многое, однако, в этом случае, зависит от 100 тестовых изображений

Вот ты сейчас какую-то ерунду написал.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#4 Фев. 16, 2018 12:14:03

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Как узнать разрешение изображения по URL, используя python-2.7?

Rodegast
Вот ты сейчас какую-то ерунду написал.
Вполне возможно, ночь не спал… смысл в общем должен быть такой: размер изображения, в принципе, можно получить через content-length. Теперь, чтобы принимать решение о том, большее оно 640x480 или нет (будем считать, что изображение больше 480x640 (определим такой класс) если оба w и h его больше соответствующих значений), нужно попытаться построить решающее правило, для этого я предложил сформировать выборку из малого числа (100) изображений, и оценивать принадлежность классу “больше 640x480” на основе размера изображения. Это конечно будет давать возможно большую ошибку. Но если изображения более менее похожи по соотношению сторон, цветовому набору, сжаты одинаково, может и сработает, т.е. результат будет лучше случайного гадания.

Офлайн

#5 Фев. 16, 2018 13:42:00

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Как узнать разрешение изображения по URL, используя python-2.7?

> будем считать, что изображение больше 480x640 (определим такой класс) если оба w и h его больше соответствующих значений

Это не правильно. Разрешение это площадь в пикселах которую будет занимать изображения, по этому что-бы сравнить размер изображения нужно сначала вычислить количество пикселей. Например:

 >>> 640 * 480 > 9000 * 90
False



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#6 Фев. 16, 2018 23:33:23

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Как узнать разрешение изображения по URL, используя python-2.7?

Постановка задачи неопределенная:

dmitriigoog
не меньше ли это изображение чем 640х480

Я потому и написал, что “определим такой класс изображений”. Я понял, что понятие “не меньше” чем 640x480 подразумевает, что соответствующие размеры изображения не меньше данных значений, т.е. 640 и 480.
Определение через число пикселей, конечно, более естественное, и с ним подход с обучением будет работать еще лучше;

Офлайн

#7 Фев. 17, 2018 12:58:15

passant
Зарегистрирован: 2018-02-17
Сообщения: 43
Репутация: +  4  -
Профиль   Отправить e-mail  

Как узнать разрешение изображения по URL, используя python-2.7?

Вклинюсь в вашу беседу. Мне кажется, что задача сформулирована изначально неправильно. Дело в том, что размер файла формата jpeg не зависит (а уж линейно - тем более) от размера файла. Кто не верит - тривиальный пример: генерируем две картинки одного размера, одну заливаем одним цветом, вторую - случайным образом зашумляем. (В Фотошопе - в один клик) потом сравниваем результаты. Поэтому, даже применяя методы машинного обучения, вначале надо выяснить, что картинки как минимум однотипны, потом строить кластеры, потом - обучать классификатор, потом - получать результат с весьма немалой ошибкой. Я думаю, топикстартер не этого ожидал. " без загрузки узнать: не меньше ли это изображение чем 640х480" - не представляется возможным, по крайней мере с достаточно степенью надежности результата.

Отредактировано passant (Фев. 17, 2018 13:03:22)

Офлайн

#8 Фев. 17, 2018 13:22:54

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как узнать разрешение изображения по URL, используя python-2.7?

passant
что размер файла формата jpeg не зависит (а уж линейно - тем более) от размера файла

Может быть подумаете еще раз?



Офлайн

#9 Фев. 17, 2018 15:01:05

passant
Зарегистрирован: 2018-02-17
Сообщения: 43
Репутация: +  4  -
Профиль   Отправить e-mail  

Как узнать разрешение изображения по URL, используя python-2.7?

FishHook
Может быть подумаете еще раз?

В прикрепленном архиве три файла:
1. Файл 1.jpg. Линейный размер 200х143 пикселя. Физический размер - 61Кб.
2. Файл 2.jpg. Линейный размер 200х143 пикселя. Физический размер - 11Кб.
3. Файл 3.jpg. Линейный размер 600х600 пикселя. Физический размер - 33Кб.
Подумал.
Зависимости физического размера файла от линейного размера для jpg-файлов - не нашел.
Соответственно предполагаю, что по физическому размеру вычислить (или даже оценить) линейный размер jpg-файлов - невозможно.
В чем моя ошибка?

Отредактировано passant (Фев. 17, 2018 15:07:16)

Прикреплённый файлы:
attachment A.rar (60,8 KБ)

Офлайн

#10 Фев. 26, 2018 14:47:32

dmitriigoog
Зарегистрирован: 2018-02-15
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как узнать разрешение изображения по URL, используя python-2.7?

есть довольно простое решение при условии скачивания картинки. может быть при отсутствии альтернативных решений можно сделать так: скачать указанную картинку по урл -> проверить её разрешение -> при условии <= 640*480 - проиндексировать для дальнейшей работы -> при уловии => 640*480 пропустить -> удалить картинку из загрузок. Как считаете, заработает?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version