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

+9
1.91K
Иногда админу нужно исправить изображение на сайте, например фото вверх ногами или лишние детали.
Что бы не скачивать фото на компьютер, можно загружать фото в фоторедактор 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 имеется проверка на админа, для тех, кто забыл или не захотел проставить правильные права доступа к самой статье.

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

Как то так. У меня все работает, проблем не обнаружил.
Нет комментариев. Ваш будет первым!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.