Создание миниатюры на стороне клиента
Всех приветствую!
Есть php галерея картинок в которой для создания миниатюр-thumbnail-ов используется GD. Памяти хоть и прилично хостинг дает, но некоторые изображения все равно слишком велики, памяти на них не хватает и создать тумбнейл в автоматическом режиме нельзя. ImageMagick подключить, понятно тоже нельзя, т.к. к конфигу php доступа нет. В связи с этим вопрос - как создавать миниатюры больших картинок? Пока есть несколько мыслей: 1) Может ImageMagickу нужно меньше памяти и его как-то можно встроить просто в php 2) Какая-то надстройка над GD которая бы разбивала картинки на части, делала бы миниатюры их, а потом склеивала бы:blink: 3) Создавать миниатюры яваскриптом на стороне клиента, а потом заливать их на сервер. Последний вариант кажется мне наиболее нормальным. Но реализации я не нашел и с какой стороны подступится тоже не знаю. В этом я не могу разобраться, может кто подскажет? Может у jQuery такая функция есть? Спасибо! |
|
Цитата:
alert('Создавать миниатюры яваскриптом на стороне клиента, а потом заливать их на сервер.'.replace('яваскрипт', 'флеш')) // нажми запустить для получения ответа |
kadabrik,
Цитата:
можно конкретнее пожалуйста? |
Цитата:
|
если речь об автоматическом создании превьюшек, то можно написать скрипт, который ресайзит их у тебя на компьютере, а потом заливает на сервер
|
kadabrik, в смысле зарегить отдельный сайт с более убогим всем, но с неограниченной оперативной памятью. Мысль конечно интересная, но это думаю, крайний вариант.
Флеш, я его почти не знаю:( С другой стороны можно найти готовый скрипт. Может есть подходящий на примете? x-yuri, именно это я и обозначил как вариант №3. Проблема за малым - написать скрипт. А я даже не знаю, как яваскриптом сжать изображение. |
нет, я не имел в виду клиентскую сторону и не имел в виду javascript. Хотя может и на нем можно
|
В смысле мне их скачивать сжимать фотошопом, например, и обратно заливать?)
Не, ну понятно можно и программку написать, которая бы взаимодейтвовала с сервером, но это равносильно. Нужна автоматизация |
Цитата:
|
я просто забыл, что речь идет о загрузке изображений пользователями. В этом случае - да, кроме flash альтернатив не знаю
если еще актуально, можешь мою реализацию попробовать |
Цитата:
|
kadabrik, x-yuri, попробую, но привязка флеша займет определенное время.
dmitriymar, можно? А можно пример или хотя бы методы/функции нужные? |
пример не дам-сам сейчас в процессе. но скажу как-изображение в канву соответсвующего размера и скриншот.
canvas.toDataURL("image/png") возвращает base64-кодированный PNG-«скриншот» канвы. и отправить на сервер уже файл нужного размера. в канву положить изображение-через форму выбора файла-ложиться но есть свои моменты чтобы он отобразился на канве. к ие прийдётся добавить поддержку канвы-так что в принципе метод кросбраузерный.сам долго искал варианты этого-на этом форуме. в итоге удалось собрать ориент. алгоритм. сейчас только ложит в канву файл -скриншот и отправку на сервер ещё не делал. |
вот текст полного ответа какой я получил по скриншоту из канвы
Цитата:
|
Canvas не будет работать в IE ниже 9 версии, тоесть в большинстве ослов на сегодня.
|
kadabrik,
растрою ,канва работает в ie ниже 9 версии-нужно библиотеку полключить и експлорер начинает работать с канвой и всеми её функциями excanvas.js -одна из библиотек раелизующих канву в експлорере есть ещё библиотека полной поодержки |
dmitriymar, канвас - хорошая мысль.
Правда пока нашел простенький вариант (на php), который конечно не решает проблемы, по позволяет ее обойти в некоторых случаях. Мы тянем превьюшку, которая встроена в jpg, и работаем с ней: if(exif_thumbnail($tmpname)) { $image_tmp = exif_thumbnail($tmpname, $width, $height); $image = imagecreatefromstring($image_tmp); imagecopyresampled( $thumb, $image, 0, 0, 0, 0, $tsize[0], $tsize[1], $width, $height ); } Правда это работает только с включенным на сервере exif и только если в картинке есть превьюшка, поэтому вариант не окончательный. Постараюсь что-нибудь придумать с канвасами. x-yuri, добавление флеш заливки не очень хороший вариант(я это не упомянул) т.к. желательно было бы генерировать тумбнейлы в первую очередь при массовой заливке с ftp. Если никак не получится, то буду пытаться использовать этот вариант. |
я ща просто налетел на то что при выборе файла-он отображается(тоесть его можно отобразить на странице ) в сафари, ие ,фф. а вот в опере и хроме нет. причину вижу в том что те браузеры-отображают только название файла -скрывая путь-если присваивать путь из строки выбора переменной-но работает с полным ,а хром и опера пишет путь при присваивании на манер-с:\fakepath\ -причём неважно на каком диске лежит изображение -всё равно будет диск с /фкепатч/имя файла.вот сейчас думаю как с:\fakepath\ обойти -если пройдёт что при убирании его будет работать как и в остальных браузерах-тогда норм. но вот если они скрывают путь этим-тогда всё станет. а вот остальная реализация-уменьшение в размерах,отправка на сервер -это не проблема
|
Цитата:
Цитата:
|
не знаю у меня таже проблемма-на серваке это делать-просто всё. но при паралельной оработке нескольких десятков не считая других задач -сервак так конкретно тормозит так что или канва или флеш. флеш учить нужно-согласен что в принципе под одну задачу +форумы-это много времени не займёт-но с другой стороны и какнва в пятом и поддержка аудио и видио официальная-так что флеш наверно останется для мультипликации и всё..
|
канва наверное отпадает-поскольку сегодня в фф перестало работать отображение картинки если она не лежит в одной папке со страницей(гляну конечно что будет если страницу с сервера вызывать) хотя ещё с утра работало с отображаемой частью пути как с целым путём:blink:
|
Цитата:
Цитата:
А я опять натолкнулся на очередной трабл: я не могу определить можно создать эскиз нормальным способом или нет. На входе в функцию стоит проверка на вес и размеры картинки, большинство картинок она отсеивает, но если картинка хорошо ужата, пусть и большого размера (2500х2000=500кб) то проходит как "нормальная". php функция createimagefromstring() пытается выполнится и вылетает. Пытался загнать ее try catch, перестает работать вообще все:blink: загоняю в if эффекта 0. Как ошибку отловить - понятия не имею. |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
а весь этот разговор в пределе выглядит так: "хочу разместить youtube на бесплатном виртуальном хостинге"... Цитата:
|
ну да согласен.ну если програмист при этом он сам то стоит тратить время-не на трубу конечно)
|
Цитата:
Я могу заливать двумя способами: 1) как все через форму - выбрал файл=>нажал залить. 2) залить много картинок на ftp и нажать "добавить папку с ftp" К способу 1 можно прикрутить флеш-загрузчик. Но способ 2 все равно нужен, т.к. нужно залить около 5к файлов и предполагается заливать еще до сотни разом. Все на любительском уровне на бесплатном хостинге (потому и ограничение памяти), хотя это не значит что я потом не докуплю платный. Просто я не особо знаком с тем как делаются проекты и думаю что по началу пусть висит на бесплатном, как доделаю, можно будет уже на платный переезжать. Цитата:
И нет, я не могу залить эти единицы в ручную просто так из-за алгоритма добавления, который я выше описал. Цитата:
Хотя наверно это самый легкий и правильный вариант. Ну неужели нет более нормального решения чем костыль? Цитата:
Цитата:
|
Цитата:
Цитата:
Нормальное решение: картинки ресайзятся перед заливкой на ftp, автоматически, и сразу заливаются. Тебя смущает дублирование логики? не дублируй ее: сделай чтобы скрипт и "добавление папки" использовали общий код Цитата:
Цитата:
попробуй на всякий случай ini_set("memory_limit", "...M") |
Цитата:
Цитата:
Цитата:
Я склоняюсь к созданию отдельной заливки вручную. Цитата:
а! система shimmie2 если интересно. Цитата:
|
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 06:30. |