• Записи 162
  • Теги 66
  • Комментарии 330

Компьютерное

Pixlr -- редактируем фото онлайн

Каждый, кто делал сайт с возможностью загрузки фото или хотя бы аватаров, наверное, задумывался о том, что хорошо бы сделать возможность пользователю отмасштабировать или обрезать фото прямо онлайн. Недавно я нашел весьма интересное решение: онлайн-редактор Pixlr, сделанный на Flash. По возможностям он мало уступает ранним версиям Photoshop (есть все те же основные инструменты, поддержка слоев, фильтров, которые были в Photoshop 7). Кроме того, имеется и более простая версия Pixlr Express, которая позволяет применить набор эффектов (изменение размера, обрезка, коррекция красных глаз, изменение баланса белого и т.п.) к изображению. Открывать в редакторе можно изображения как с URL, так и со своего компьютера в форматах JPG, TIFF, PSD, PNG и других.


Самый простой способ подключить редактор к своему сайту — открывать его в IFRAME. Но в этом случае пользователю придется сохранять отредактированный файл на свой компьютер, а потом грузить его на сайт. Неудобно. Поэтому лучше использовать Pixlr API для открытия и сохранения файлов прямо на сайт. API очень прост в освоении:



сначала подгружаем библиотеку http://developer.pixlr.com/_script/pixlr.js:


<script type="text/javascript" src="/_script/pixlr.js"></script>


Далее задаем настройки. Это можно сделать одним из двух способов. Первый — заранее через pixlr.settings.


<script type="text/javascript">
pixlr.settings.target = // URL, на который будет отправлена картинка при сохранении;
pixlr.settings.exit = // URL, куда перейдет пользователь, если выйдет без сохранения картинки;
pixlr.settings.credentials = true;
pixlr.settings.method = // способ передачи картинки. Может быть get и post. В случае get картинка сохраняется на сервере Pixlr, и передается ее URL, если post, то картинка передается непосредственно на сайт, указанный в target в поле image
pixlr.settings.image = //URL картинки, которую требуется отредактировать (при передаче GET-запросом) или сама картинка (при POST-запросе)
pixlr.settings.title = // название картинки
pixlr.settings.referrer = // название сайта, для которого производится редактирование картинки
</script>

Второй — непосредственно при вызове редактора, который делается так:


<a href="#" onclick="pixlr.overlay.show({image:'URL картинки', title:'Заголовок ' /*, другие параметры */}); reutrn false"><img src='' /></a>

Для того, чтобы вызывать Pixlr Express, нужно задать параметр service: 'express'. При вызове URL, указанного в target, будут переданы следующие параметры:
title — название картинки, которое пользователь может задать в редакторе;
image — ссылка на URL отредактированной картинки (при get-запросе) или сам файл с картинкой (при post-запросе);
type — формат, в котором сохранена картинка.


Если отправка на сайт осуществляется методом POST, то нужно создать в его корне файл crossdomain.xml, в котором разрешить прием данных от pixlr.com. Файл должен быть такого вида:


<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*.pixlr.com" />
</cross-domain-policy>

6 комментариев:

Нет
Gena
0

Если у меня на сайте всё через web.config, то xml-файл не будет работать?

4X_Pro
0

Почему же? Насколько я понимаю, запрос передается на обработку скрипту только тогда, когда файл соответствующий не найден. А вообще, самый простой вариант — положить XML-файл в корень и набрать в адресной строке http://имя_сайта/crossdomain.xml. Если файл будет виден, то все Ok.

Нет
Gena
0

В этом то и проблема. Я передаю файл POST методом. Картинка загружается, обрабатывается, но не сохраняется на сервере обратно. Т.е. идёт "бесконечное" сохранение.

ссылка:
href="javascript:pixlr.edit({image:' echo $url; ', title: ' echo $filename; ', method: 'post', service:'express', target:'http://localhost/images.php?url= echo $url;', exit:'http://localhost/r.php'});"

в нужных местах открывается пхп-код, но с ним не могу запостить

4X_Pro
0

Вы прямо так и передаете localhost или только для примера такое написали? Если первое, то в этом и проблема: localhost — это адрес 127.0.0.1, означающий "этот компьютер". Соответственно, получив в качестве адреса сохранения localhost, сервер Pixlr пытается сохранить картинку не к вам, а на самого себя (и хорошо еще, что не падает при этом). Там нужно передавать свой IP-адрес в таком случае (ну и естественно, ваш сервер должен быть виден напрямую из Интернета, без всяких адресов вида 192.168.*.* или 10.*.*.*).

Нет
Gena
0

я взял как за пример. так на хосте в интернете весит.

4X_Pro
0

Я бы посоветовал вот что сделать: а) посмотреть, открывается ли файл crossdomain.xml вообще, б) посмотреть по логам сервера, приходит ли запрос от Pixlr, в) отправить вручную запрос с файлом от себя, чтобы убедиться, что скрипт-получатель работает нормально.

Написать комментарий


Задать вопрос