slv
написал 2 августа 2008 года в 05:53 (1014 просмотра)
Ведет себя
неопределенно; открыл 1 тему в форуме, оставил 2 комментария на сайте.
У меня на сайте (пишу на php) есть возможность вставлять в камментарии картинки тегами [ img ]radikal.ru/123.jpg[ /img ] и возникла проблема с большими разрешениями, никто ведь не запрещает вставить картинку 1600х1200, со всеми вытекающими последствиями для дизайна, какие есть способы ограничить размеры?
Последние комментарии
-
OlegL, 17 декабря 2023 года в 15:00 →
Перекличка
21
-
REDkiy, 8 июня 2023 года в 9:09 →
Как «замокать» файл для юниттеста в Python?
2
-
fhunter, 29 ноября 2022 года в 2:09 →
Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt?
6
-
Иванн, 9 апреля 2022 года в 8:31 →
Ассоциация РАСПО провела первое учредительное собрание
1
-
Kiri11.ADV1, 7 марта 2021 года в 12:01 →
Логи catalina.out в TomCat 9 в формате JSON
1
DevOps as a Service from Palark
24/7 SRE & DevOps service to cover all your Kubernetes needs.

Можно ведь получить размеры удаленной картинки. Ну, а далее — варианты:
1) Ругаться на пользователя, что он вставляет слонов.
2) Добавлять насильные width=, height= в HTML (пропорциональные оригинальным размерам).
3) Придумать что-нибудь новенькое и интересное :-) — например, с помощью imagemagick/gdlib/… отмасштабировать картинку, сохранить на своем сервере и показывать уже ее.
это будет тормозить скрипт, но все же интересно как это реализуется на пхп.
наверное это будет самый оптимальный вариант, вот накатал скриптик:
<img border=«0» id=«i1217675751» onload="</p><p> var s=getElementById(’i1217675751\′);</p><p> var w=s.width;</p><p> var h=s.height;</p><p> var wr=screen.width-590;</p><p> var hr=screen.height-590;</p><p> if(wr<435){wr=435;}</p><p> if(w>h||w==h){</p><p> if(w>wr){</p><p> this.width=wr;this.height=h/(w/wr);</p><p> }</p><p> }</p><p> if(w<h){</p><p> if(h>hr){</p><p> this.height=hr;this.width=w/(h/hr);}</p><p> }</p><p>» src=«1.jpg»>
только он в ИЕ и файерфоксе работает, а в Опере — нет. Где тут ошибка?
Вот это лишнее:
var s=getElementById('i1217675751'); var w=s.width; var h=s.height;Логично не создавать никакую s, а делать сразу:
У меня работает в Opera 9.50 Linux, сборка 2042.
да все уже разбрался, вынес в отдельную функцию, теперь все пашет:
function resize_image(arg){ var s=document.images[arg]; var w=s.width; var h=s.height; var wr=screen.height*(4/3)-590; var hr=screen.height-590; if(wr<435)wr=435; if((w>h||w==h)&&(w>wr)){ s.width=wr;s.height=h/(w/wr); } if((whr)){ s.height=hr;s.width=w/(h/hr); } }