За последние 24 часа нас посетили 19648 программистов и 1659 роботов. Сейчас ищут 1508 программистов ...

Реальное изменение размера картинки. (помощь непосвященному)

Тема в разделе "JavaScript и AJAX", создана пользователем $oft, 25 янв 2010.

  1. $oft

    $oft Активный пользователь

    С нами с:
    11 окт 2008
    Сообщения:
    113
    Симпатии:
    0
    Адрес:
    Орел
    Доброго времени суток.

    В java скрипте я не соображаю ничего (примерно ход действий могу тока проследить глядя на код).

    Нужно осуществить загрузку изображения (фото) на сервер. Практически никто не пытается сжать изображение перед загрузкой его в инет и выкладывают как есть с цифровиков по несколько МБ картинки.

    На любом уважающем себя сайте есть превьюшки. их глупо делать просто уменьшая их в хтмл тегах, ведь реально то загружается вся большая картинка.
    вот скрипт такой (мне не подходящий):
    http://www.cyberforum.ru/javascript/thread35054.html

    По этой причине превьюшки уже должны лежать на сервере и создаваться еще при загрузке изображения туда. Соответственно при загрузке они должны уменьшаться "на лету".

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

    как реализовать это изменение размера "на лету" через ява скрипт, а потом вставить изображение в пост запрос?
    если в пост нереально вставить, то пусть хоть гдето сохранится, чтобы взять оттуда можно было уменьшенное
    _____________
    PS
    Пожалуйста код с комментами для чайника, ибо являюсь ПХП кодером и яваскрипт могу только копипастить и методом тыка менять параметры.
    Заранее извиняюсь если такое уже было(( гугль не нашел такого...
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Никак. Javascript даже не умеет отсылать запросы. Он только может изменять состояние браузера и html с помощью DOM. Все остальное - это манипуляции через сторонние компоненты (например, ajax - через объект XMLHttpRequest), но для графики особо ничего нет. Будет - Canvas, вернее он есть, но мало где поддерживается, а если и поддерживается, то не полностью.

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

    Так делаю только те, кто плохо понимает, чем занимается.

    Вроде как на флеше это можно реализовать. По крайней мере, вконтакте что-то похожее.
     
  3. $oft

    $oft Активный пользователь

    С нами с:
    11 окт 2008
    Сообщения:
    113
    Симпатии:
    0
    Адрес:
    Орел
    а скажем яваскрипт может сохранить измененную картинку где нить на компе, а пхп уже подцеплю её
     
  4. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Пользователь ничего и не подозревал, а тем временем, грязные руки пхп тянулись на комп за фотографиями его обнаженной жены.
     
  5. $oft

    $oft Активный пользователь

    С нами с:
    11 окт 2008
    Сообщения:
    113
    Симпатии:
    0
    Адрес:
    Орел
    Ну без веления юзера код не будет распускать руки)) так это возможно?
     
  6. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    В принципе, да. Написать на javascripte скрипт, который будет содержаться в подгружаемом pdf-файле. Скрипт будет подгружать exe-файл, который будет ресайзить изображение с помощью встроенной виндовой библиотеки, а потом отсылать на Ваш сервер.
     
  7. GudGuy

    GudGuy Активный пользователь

    С нами с:
    14 июн 2007
    Сообщения:
    909
    Симпатии:
    0
    Адрес:
    Москва
    А если отправить на сервер картинку, там её уменьшить и вернуть ссылку на уже готовую? Ну, это я так на правах теории. Сам сомневаюсь что аякс нормально передаёт файлы=)
     
  8. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    не сомневайся. Он таки передает.
     
  9. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Simpliest
    ага, в iframe
     
  10. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    А что, мысль неплохая. Для разгрузки сервака - самое то.
    Если б только джээсу давали доступ к файловой системе...
     
  11. $oft

    $oft Активный пользователь

    С нами с:
    11 окт 2008
    Сообщения:
    113
    Симпатии:
    0
    Адрес:
    Орел
    PHP:
    1. <?
    2. function imageresize($outfile,$infile,$neww,$newh,$quality) {
    3.     $im=imagecreatefromjpeg($infile);
    4.     $k1=$neww/imagesx($im);
    5.     $k2=$newh/imagesy($im);
    6.     $k=$k1>$k2?$k2:$k1;
    7.  
    8.     $w=intval(imagesx($im)*$k);
    9.     $h=intval(imagesy($im)*$k);
    10.  
    11.     $im1=imagecreatetruecolor($w,$h);
    12.     imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im));
    13.  
    14.     imagejpeg($im1,$outfile,$quality);
    15.     imagedestroy($im);
    16.     imagedestroy($im1);
    17.     }
    18.  
    19. imageresize("","webcam.jpg",640,240,75);
    20.  
    21. ?>
    22.  
    вот оно на сервере как делает... но суть в том, чтобы снять нагрузку с сервера, ускорить передачу данных.

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

    как на аяксе реализовать? и как встроить в страницу... с комментами код плз
     
  12. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    http://ru.wikipedia.org/wiki/AJAX
     
  13. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    блин, что за тупость. На сервере обрабатываем графику так как надо и точка. Нахер вообще думать о JavaScript, миллион проблем сразу.
     
  14. $oft

    $oft Активный пользователь

    С нами с:
    11 окт 2008
    Сообщения:
    113
    Симпатии:
    0
    Адрес:
    Орел
    пока только так и делаю...

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


    ЗЫ
    есть еще одна весч над чем задуматься бы стоит (но меня пока она не сильно цепляет):
    чтобы проверить а нужно го ли размера юзер загружает файл, его сначала надо скачать, а потом уже проверить! говорят фаерфокс только может проверить файл на размер перед выгрузкой...

    конечно есть в хтмл скрытое поле, которое останавливает загрузку если размер файла превысил указанное число байт... а если это недобросовестны пользователь? взломщик? конкурент?... он сам обойдя страничку поставит на отправку файл этак 500 мб и будет забивать сервер и жрать его ресурсы. конечно на сервере есть ограничивающая это технологоия, но кто мешает злоумышленнику поставить на аплауд 50 файлов по 10 мб??...
    ... этак лирическое отступление к слову о том, что не пло хо бы часть работы на пользователя перетянуть
     
  15. $oft

    $oft Активный пользователь

    С нами с:
    11 окт 2008
    Сообщения:
    113
    Симпатии:
    0
    Адрес:
    Орел
    хм... понял в чем суть аякса.
    В вики написано:
    я не знаю как аякс отправляет сообщения. Если это похоже на GET или POST запрос, то почему бы и не скопировать это сообщение в файл.jpg

    и так и не понял возможно ли изменение линейных размеров картинки аяксом?
     
  16. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    ну вот и делай, и не морочь голову ни себе ни людям. Это я к тому, что у тебя вопросы размытые. Конкретно надо спрашивать.
    А вообще может мы все картинки зальём юзеру, нахер они место будут занимать на сервере??
     
  17. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Нет нельзя.

    Можешь написать java-аплет(не javascript, а именно Java) или flash который этим будет заниматься.
     
  18. $oft

    $oft Активный пользователь

    С нами с:
    11 окт 2008
    Сообщения:
    113
    Симпатии:
    0
    Адрес:
    Орел
    куда уж конкретнее:
    Хорошая идея... этакий торрент сайт будет.
    Вообще по плану кэширование изображений и частей сайта у юзера на компе, чтоб сто раз одно и то же не брал с сервера - опять же скорость сайта увеличится

    увы... нет времени яваскрипт, флеш изучать... несколько часов прибавленных к суткам решили бы эту проблему.

    Вобщем понятно, что пока не изобрели чего я хочу. А самому на флеше лень писать...
     
  19. потому что то, что ты хочешь - это бред.
     
  20. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Обычно, изобретая что-то новое, такими выражениями не пользуются. Если изображения привычно хранятся сервере, то это еще не означает что так будет всегда. Вбили в голову условности, а теперь их проповедуете

    Приведу аналогию: на дворе 1998 год

    Да идея хорошая, более того, неплохо реализована

    Интересно, а плагинами такое можно реализовать? ;)
     
  21. не надо игратся словами. То что хочет он - именно изза непонимания банальной работы ХТТП, а не потому что он изобретает что то новое.
     
  22. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    topas
    причем тут вбили в голову. Человек не разграничивает методы, он в них теряется, поэтому конкретно не может поставить свои цели. В этом и проблема.
     
  23. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    и это тоже
     
  24. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Костян, флоппик
    У человека нет матчасти, но есть понимание того что как сейчас реализован обмен фотографиями это убожество

    Развитие событий: человек начинает изучать технологии при помощи которых он может это исправить

    И тут наша с вами общая задача дать человеку направление, а не просто сказать "учи основы"

    Simpliest например так и сделал, он указал конкретный инструмент, респект.

    А вы что сделали? Посмеялись над неопытностью? так держать!