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

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

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

1/ Создаём в админке статью
в тело статьи вставляем файл pixlr.php
ниже я исхожу из того что урл статьи на вашем сайте 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 на свой сайт
заменить site.ru/pixlr.html на ссылку на вашу страницу которую вы создали пять минут назад.

3/ создать php файл pixlr.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 имеется проверка на админа, для тех, кто забыл или не захотел проставить правильные права доступа к самой статье.

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

Как то так. У меня все работает, проблем не обнаружил.
Нет комментариев. Ваш будет первым!

Еще от автора

Капча на сайт или разделы сайта
Если нужно, закрыть весь сайт или некоторые его разделы каптчей.
Пинг поисковых систем для первой ветки
Небольшая интеграция инструментов для пингования, чтобы сделать его чуть удобнее
Генератор карты сайта в формате txt на лету без крона
Вообще то где то тут уже есть вполне рабочие генераторы карты для первой ветки, но этот вариант тоже имеет право быть.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.