Форумы Форум www.proxomitron.ru
Все о программе Proxomitron
Главная  • FAQ для форума  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Личные сообщения  •  Вход
 Фильтрация картинок по размеру в килобайтах.
 Сайт -> Форумы » Фильтры
Следующая тема
Предыдущая тема

Новая тема  Ответить
Автор Сообщение
Roman V. M.
Гость





СообщениеДобавлено: Сб, Июн 12 2004 19:46 Цитировать |  |  | 

Может ли Проксомитрон фильтровать картинки не по размеру в пикселях а по размеру в килобайтах/мегабайтах?
К началу
rokir
Admin


Зарегистрирован: 28.04.2004
Сообщения: 295
Откуда: Msk

СообщениеДобавлено: Сб, Июн 12 2004 21:35 Цитировать |  |  | 

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

Скорее всего это не возможно сделать силами proxomitron'а. Sad
К началу Профиль Сообщение ICQ
Витя Малеев
Junior Member
Junior Member


Зарегистрирован: 30.06.2004
Сообщения: 20
Откуда: г. Норильск, Россия

СообщениеДобавлено: Ср, Июн 30 2004 07:49 Цитировать |  |  | 

А если в фильтре использовать заголовок Content-Length: Question
К началу Профиль Сообщение ICQ
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2625
Откуда: SPb

СообщениеДобавлено: Ср, Июн 30 2004 10:09 Цитировать |  |  | 

2Витя Малеев: Гениально!

Кстати, как раз по размеру в пикселях не очень-то порежешь: в html он не всегда указан, а Prox размер обрабатываемого гифа не выдаёт, не говоря уж о неизвестных ему форматах.
К началу Профиль Сообщение
c0re
Newbee
Newbee


Зарегистрирован: 05.08.2004
Сообщения: 4
Откуда: Саратов

СообщениеДобавлено: Чт, Авг 05 2004 15:31 Цитировать |  |  | 

ИМХО:
если картинка отдается скриптом, т.е. там *.php, *.pl и т.п.
то скорее всего Content-length даже и нет, либо он вообще хз чему равен...
К началу Профиль Сообщение ICQ
Гость






СообщениеДобавлено: Вт, Сен 28 2004 19:21 Цитировать |  |  | 

c0re писал(а):
ИМХО:
если картинка отдается скриптом, т.е. там *.php, *.pl и т.п.
то скорее всего Content-length даже и нет, либо он вообще хз чему равен...


Все там есть, только фильтр надо делать не текста страницы, а фильтр заголовка типа 'in'. Запрос, предположим скриптом, а вернут Content-Type: image/jpeg -- значит картинка, Content-Length: 20000, значит режем по размеру. Вообще-то все тривиально.
К началу
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2625
Откуда: SPb

СообщениеДобавлено: Чт, Дек 09 2004 18:36 Цитировать |  |  | 

Вот фильтр, который убивает все картинки весом больше 50 Кб:
Код:

In = TRUE
Out = FALSE
Key = "Content-Length: Kill images by filesize (in) [ALX]"
Match = "[#50000:*] $IHDR(Content-type: image/*)"
Replace = "55$RDIR(http://Local.ptron/killed.gif)"


Все "большие" графические файлы заменяются прозрачным гифом. Если хочется видеть что-то на месте картинок, можно заменять их на любой другой файл, менее прозрачный (не забудьте при этом поменять и размер файла в строке замены).
К началу Профиль Сообщение
Partyzan
Platinum Member
Platinum Member


Зарегистрирован: 15.02.2005
Сообщения: 319

СообщениеДобавлено: Вт, Фев 15 2005 20:59 Цитировать |  |  | 

chAlx писал(а):

Replace = "55$RDIR(http://Local.ptron/killed.gif)"


А что это за 55?
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2625
Откуда: SPb

СообщениеДобавлено: Пт, Фев 18 2005 19:29 Цитировать |  |  | 

Partyzan писал(а):
chAlx писал(а):

Replace = "55$RDIR(http://Local.ptron/killed.gif)"

А что это за 55?

Размер файла, на который подменяется исходный.
К началу Профиль Сообщение
Partyzan
Platinum Member
Platinum Member


Зарегистрирован: 15.02.2005
Сообщения: 319

СообщениеДобавлено: Пт, Фев 18 2005 21:02 Цитировать |  |  | 

А, ну да, то есть получается

Content-Length: 55

..байт
Понял, спасибо :-)
К началу Профиль Сообщение
taimael
Junior Member
Junior Member


Зарегистрирован: 22.01.2005
Сообщения: 34

СообщениеДобавлено: Сб, Апр 02 2005 07:07 Цитировать |  |  | 

фильтр супер!
единственный который не пропускает любые флэшки в принципе Smile))


есть такая штука, когда картинка загружается постепенно - ее видно сразу полностью, но с очень плохим качеством, и по мере загрузки, качество улучшается.

можно ли сделать фильтр, который по такому принципу загружал бы первые [заданное количество килобайт] каждой картинки?

сори за, но требуемой терминологией абсолютно не владею Sad
К началу Профиль Сообщение
Partyzan
Platinum Member
Platinum Member


Зарегистрирован: 15.02.2005
Сообщения: 319

СообщениеДобавлено: Сб, Апр 02 2005 22:40 Цитировать |  |  | 

По-моему, нельзя, прокс ловит только начало соединения, и не может прервать в процессе.
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2625
Откуда: SPb

СообщениеДобавлено: Пн, Апр 04 2005 09:16 Цитировать |  |  | 

taimael
Цитата:
можно ли сделать фильтр, который по такому принципу загружал бы первые [заданное количество килобайт] каждой картинки?

Если и можно было бы, то не факт, что ты бы их увидел: битые картинки не каждый браузер отображает (а урезанный файл -- это не то же, что файл в процессе загрузки: у него EOF не на том месте стоит, что приводит к ошибке).

Хотя попробовать создать фильтр можно: включить фильтрацию картинок (например, image/gif), прозрачно передавать первые N байт на выход, а остальное выкидывать с разрывом соединения. Можно даже в конец битого файла какую-нибудь заглушку приписывать, чтобы не очень битый был ;)
К началу Профиль Сообщение
Partyzan
Platinum Member
Platinum Member


Зарегистрирован: 15.02.2005
Сообщения: 319

СообщениеДобавлено: Пн, Апр 04 2005 10:35 Цитировать |  |  | 

chAlx писал(а):
битые картинки не каждый браузер отображает (а урезанный файл -- это не то же, что файл в процессе загрузки

Из наблюдений - Firefox отображает недокачанные картинки в составе странички, но не отображает отдельно загружаемую(и правильно). IE отображает и так, и так.

chAlx писал(а):

Хотя попробовать создать фильтр можно: включить фильтрацию картинок (например, image/gif), прозрачно передавать первые N байт на выход, а остальное выкидывать с разрывом соединения.

Каким образом?
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2625
Откуда: SPb

СообщениеДобавлено: Пн, Апр 04 2005 17:50 Цитировать |  |  | 

Что-то вроде этого:

Код:

In = TRUE
Out = FALSE
Key = "Content-type: Cut images by filesize (in) [ALX]"
Match = "(image/*)\1$IHDR(Content-Length: [#50000:*])"
Replace = "\1$FILTER(True)"

Name = "Content-type: Cut images by filesize [ALX]"
Active = TRUE
Limit = 50001
Match = "$IHDR(Content-type: image/*)(?+{50000})\1*"
Replace = "\1\k"


Первый фильтр (заголовочный) включает фильтрацию для файлов, которые являются картинками и размером выше заданного, а второй обрезает такие файлы. Можно сделать более грамотную проверку: передавать из первого фильтра во второй URL для обработки, чтобы не перепроверять Content-type.
К началу Профиль Сообщение
Partyzan
Platinum Member
Platinum Member


Зарегистрирован: 15.02.2005
Сообщения: 319

СообщениеДобавлено: Пн, Апр 04 2005 22:01 Цитировать |  |  | 

Отличная идея, я бы не догадался.
К началу Профиль Сообщение
taimael
Junior Member
Junior Member


Зарегистрирован: 22.01.2005
Сообщения: 34

СообщениеДобавлено: Чт, Апр 07 2005 19:04 Цитировать |  |  | 

chAlx писал(а):
Что-то вроде этого:

Код:

In = TRUE
Out = FALSE
Key = "Content-type: Cut images by filesize (in) [ALX]"
Match = "(image/*)\1$IHDR(Content-Length: [#50000:*])"
Replace = "\1$FILTER(True)"

Name = "Content-type: Cut images by filesize [ALX]"
Active = TRUE
Limit = 50001
Match = "$IHDR(Content-type: image/*)(?+{50000})\1*"
Replace = "\1\k"


Первый фильтр (заголовочный) включает фильтрацию для файлов, которые являются картинками и размером выше заданного, а второй обрезает такие файлы. Можно сделать более грамотную проверку: передавать из первого фильтра во второй URL для обработки, чтобы не перепроверять Content-type.



А можно задавать ограничение не жестко, а в списке, например, такого формата:

default 50000
[сайт X] 1000
[сайт Y] 20000
[сайт Z] 0
...
К началу Профиль Сообщение
Partyzan
Platinum Member
Platinum Member


Зарегистрирован: 15.02.2005
Сообщения: 319

СообщениеДобавлено: Чт, Апр 07 2005 19:13 Цитировать |  |  | 

taimael писал(а):
А можно задавать ограничение не жестко, а в списке, например, такого формата:

default 50000
[сайт X] 1000
[сайт Y] 20000
[сайт Z] 0
...

Это вопрос или утверждение? :-)
К началу Профиль Сообщение
taimael
Junior Member
Junior Member


Зарегистрирован: 22.01.2005
Сообщения: 34

СообщениеДобавлено: Пт, Апр 08 2005 07:30 Цитировать |  |  | 

Partyzan писал(а):
taimael писал(а):
А можно задавать ограничение не жестко, а в списке, например, такого формата:

default 50000
[сайт X] 1000
[сайт Y] 20000
[сайт Z] 0
...

Это вопрос или утверждение? :-)



вопрос, вот только не сообразил куда поставить его знак по правилам велико-могучего...
не после двоеточия же..., а в самом низу - как-то, кажется, слишком поздно... Smile
К началу Профиль Сообщение
Partyzan
Platinum Member
Platinum Member


Зарегистрирован: 15.02.2005
Сообщения: 319

СообщениеДобавлено: Пт, Апр 08 2005 08:25 Цитировать |  |  | 

Если по существу, в одном из своих фильтров я реализовал такую схему:

(([сайт X] $SET(\3=1000)|
([сайт Y] $SET(\3=20000)|
([сайт Z] $SET(\3=0)|
$SET(\3=50000))

Вместо [сайт X] можно вставлять список. Лучше пока не придумал.
К началу Профиль Сообщение
Показать сообщения:      
 
Новая тема  Ответить

 Перейти:   




Следующая тема
Предыдущая тема
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


P o w e r e d b y p h p B B © p h p B B G r o u p :: T h e m e b a s e d o n FI T h e m e :: Часовой пояс: GMT + 3