Онлайн редактор изображений для админа на базе API Pixlr 1.X

1267
Иногда админу нужно исправить изображение на сайте, например фото вверх ногами или лишние детали.
Что бы не скачивать фото на компьютер, можно загружать фото в фоторедактор Pixlr http://pixlr.com/express/ там менять и возвращать на место.

Показываю на примере публичной галереи, компонент "Фото"

1/ Создаём в админке статью
в тело статьи вставляем файл pixlr.php
ниже я исхожу из того что урл статьи на вашем сайте http://site.ru/pixlr.html
в настройках статьи устанавливаем доступ только для админа.

2/ В шаблоне templates/components/com_photos_view_photo.tpl
в любом месте вставлем ссылку

{if $is_admin}
<a class="iframe cboxElement" href="http://pixlr.com/express/?s=c&image=http://site.ru/images/photos/{$photo.file}&title={$photo.file}&target=http://site.ru/pixlr.html&exit=http://site.ru/photos/photo{$photo.id}.html">Изменить на PIXLR</a>
{/if}

заменить site.ru на свой сайт
заменить http://site.ru/pixlr.html на ссылку на вашу страницу которую вы создали пять минут назад.

3/ создать php файл pixlr.php

Содержимое файла

Код PHP:
  1.  
  2. <?php
  3. $inUser = cmsUser::getInstance();
  4. $inDB = cmsDatabase::getInstance();
  5.  
  6.  
  7. if($inUser->is_admin){
  8.  
  9. //получаем файл от pixlr
  10. $imagefile = $_GET['image'];
  11. $imagetitle = $_GET['title'];
  12.  
  13.  
  14. if($imagefile || $imagetitle){
  15.  
  16. $imagetitleoldname = $imagetitle.'.jpg';
  17. $newfilename = $imagetitle.'_v_'.date('dmyHi').'.jpg';
  18.  
  19. //сохраняем обработанное изображение присвоим ему новое имя файла
  20. if(copy($imagefile, 'images/photos/'.$newfilename)){
  21.  
  22. //вносим новое имя файла в базу
  23. $inDB->query("UPDATE cms_photo_files SET file = '$newfilename' WHERE file = '$imagetitleoldname'");
  24.  
  25.  
  26. cmsCore::includeGraphics();
  27. //создаём медиум копию 450 и 800 ширина и высота, false - не обрезать в квадрат, false - не наносить водяной знак
  28. @img_resize('images/photos/'.$newfilename, 'images/photos/medium/'.$newfilename, 450, 800, false, false);
  29.  
  30. //создаём маленькую превью копию этого же изображения
  31. @img_resize('images/photos/'.$newfilename, 'images/photos/small/'.$newfilename, 96, 96, true, false);
  32.  
  33. //удаляем старые файлы
  34. if(unlink('images/photos/'.$imagetitle.'.jpg')){
  35. echo 'Оригинал старого файла удалён
  36. ';
  37. }
  38. if(unlink('images/photos/medium/'.$imagetitle.'.jpg')){
  39. echo 'Medium file старого файла удалён
  40. ';
  41. }
  42. if(unlink('images/photos/small/'.$imagetitle.'.jpg')){
  43. echo 'Small file старого файла удалён
  44. ';
  45. }
  46. echo 'Дело сделано';
  47. }
  48.  
  49.  
  50.  
  51. } else {
  52. echo 'Готов работать, шеф!';
  53. }
  54.  
  55. } else {
  56. echo 'Ты кто такой? Давай, до свидания.';
  57. }
  58.  
  59.  
  60. ?>

Поместить файл pixlr.php в папку includes/myphp

Важно: это только для админа. Предоставлять эту функцию обычным пользователям, думаю, не безопасно, поэтому в коде pixlr.php имеется проверка на админа, для тех, кто забыл или не захотел проставить правильные права доступа к самой статье.

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

Как то так. У меня все работает, проблем не обнаружил.
Превью изображений из блогов для модуля "Блог" и плагина "Похожие посты". | Вставка фотоальбома через bbcode в блогах и т.д.
Комментарии (0)

Нет комментариев. Ваш будет первым!