Автор Тема: Анализ и изменение размеров картинки перед показом  (Прочитано 6756 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Подскажите люди, можно ли сделать так (и если да то как).
Должна на страничке показываться картинка с неизвестной шириной(и высотой). И если она меньше чем 800(600), то пусть показывается в родном размере, а ежели ширина (или высота) больше 800 (600 соответственно), тогда картинка
показывается как 800 (а по высоте соответственно 600). Короче, можно ли принять картинку, перед показом проанализировать ее габариты и показать ее с нужными габаритами исходя из анализа габаритов текущих.
Все болезни от нервов, только сифилис от удовольствия

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Можно, все можно...:)

Картинка есть объект Image со свойствами width и height (и не только ;) После загрузки страницы читаешь у объекта свойства, потом проверяешь и изменяешь их нужным образом.

Вот например, если смотришь через MSIE, набери в строке адреса:

javascript:alert(document.images[0].height = 0)

и посмотри, куда делось лого этого сайта :D
В IE можно сделать навороченней: поставить обработчик на OnLoad картинки и сделать то же самое.
[ основной браузер когда-то был, теперь попробуй разберись =]

Ленивый гость

  • Гость
Цитировать
если смотришь через MSIE

А если у кого другие привязанности :), DOM все чета по разному интерпретируют.
Вообще больше даже не это напрягает, а просто слабое знание явы(читай полное незнание). Вот в этом загвоздка :(
Можно сабж этот на сервере сделать, но там нужны модули Перл дополнительные, в общем напряг еще больший, проще будет яву поизучать.
Дела...

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Мля! ответ написал, а логин/пароль вроде как бы и не надо вводить :), короче, предыдущий пост писал я , ленивый Mog.
Все болезни от нервов, только сифилис от удовольствия

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Привязанности привязанностями, но Image вроде как и в старых NN работает :)

Дык, а как еще на стороне клиента  (форум-то по JS ;))посмотреть параметры картинки, как не скриптом или какой-нить Явой? Яву учить лень, значит - JS. Ну а здесь - только DOM, браузеры и иже с ними... :o

На стороне сервера есть PerlMagick к ImageMagick\'у. Думается мне, там можно найти нужное.
[ основной браузер когда-то был, теперь попробуй разберись =]

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Цитировать
На стороне сервера есть

А вот это спорное утверждение, что есть. И что поставить дадут - не факт.

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

Оффлайн Jslab

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 62
  • +0/-0
  • 0
    • Просмотр профиля
    • http://arkproject.com/intertype
первичная загрузка скрытая(в невидимом слое иле фрейме), а после анализа загрузить уже то, что надо...
но перв.загрузка таких картинок (>600x800 >= 100k ) будет
заметно тормозить... - стоит пустить вначале "Loading..."  с небольшой, но красочной заставкой(дин.эффектом)...

Оффлайн Доктор

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 487
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
А в ПХП есть кул функция getimagesize

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Цитировать
в ПХП есть кул функция getimagesize

И что она делает? Если не секрет :)
Цитировать
первичная загрузка скрытая(в невидимом слое иле фрейме), а после анализа загрузить уже то, что надо...

грузить 2 раза? это немного не то, я об этом подумывал.
Все болезни от нервов, только сифилис от удовольствия

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Цитировать

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

грузить 2 раза? это немного не то, я об этом подумывал.


Можно грузить один раз, а потом изменять размер и показывать ;)

Кстати, с самого начала здесь есть немного нехороший фактор: если исходная картинка имеет размер, скажем, 1600x1200, а показывать ее надо как 800x600, то лучше ее все-таки предварительно обработать на стороне сервера , иначе пользователь может не дождаться загрузки...
[ основной браузер когда-то был, теперь попробуй разберись =]

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
А можно просто узнать размер, без загрузки самой картинки? имеется ввиду клиентская сторона. Хотя наверно нет :(.
Все болезни от нервов, только сифилис от удовольствия

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
И вообще! Имеет ли смысл ограничивать габариты? Если справа-снизу впринципе пространство ничем не ограничено.
А по поводу большого размера, там будет ограничение файлов, ну скажем, в 200 кб. Да и то сказать, закачиваться картинки будут сторонними юзерами. Не думаю, что ради прикола будут закачивать по 2-4 Мб , да и не получится ни хрена, ограниченный обьем закачки, однако.

Да. Чем дальше в лес - тем больше дров. Так и придется или это дело похерить или модулями заниматься :(
Все болезни от нервов, только сифилис от удовольствия

Оффлайн rembo

  • Больной
  • Постоялец
  • ***
  • Сообщений: 219
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.v4.ru
Цитировать
Чем дальше в лес
- тем ближе вылез... На стороне сервера все это делается.
« Последнее редактирование: 27 Сентября 2002, 18:24:26 от rembo »
программист должен все сделать так, чтоб потом ничего не делать

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Цитировать
На стороне сервера все это делается

с помощью модулей, которых там отродясь небывало и, если учитывать, что хостинг бесплатный, никогда и не будет :(
Все болезни от нервов, только сифилис от удовольствия

Оффлайн Доктор

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 487
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Если есть ПХП, то getimagesize тоже есть:)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28