PHP, GD, проблема с выводом изображения

229
05 февраля 2018, 06:01

Здравствуйте.

Моя задача в том, чтобы затемнить изображение, ссылку на которое вводит пользователь. Сначала я решила просто вывести img и уже столкнулась с проблемой. Я отправляю ajax-запрос на страницу с gd-кодом:

    $(".button").click(function () {
        $.ajax({
            url: "index.php",
            type: "POST",
            data: {
                img_url: $(".img_url").val()
            },
            success: function () {
               $(".for_img").load("index.php");
                //document.location.href= "index.php";
            }
        })
    });

А код в index.php выглядит вот так:

 function LoadJpeg($imgname) {
/* Пытаемся открыть */
$im = @imagecreatefromjpeg($imgname);
/* Если не удалось */
if(!$im) {
    /* Создаем пустое изображение */
    $im  = imagecreatetruecolor(150, 30);
    $bgc = imagecolorallocate($im, 255, 255, 255);
    $tc  = imagecolorallocate($im, 0, 0, 0);
    imagefilledrectangle($im, 0, 0, 150, 30, $bgc);
    /* Выводим сообщение об ошибке */
    imagestring($im, 1, 5, 5, 'Ошибка загрузки ' . $imgname, $tc);
}
        return $im;
        }
         header('Content-Type: image/jpeg');

      //подставляем параметр в функцию
     $img = LoadJpeg($_POST["img_url"]);
    imagejpeg($img);

В сети возвращается нормальное изображение, при попытке вывода - очень много крякозябров. Пожалуйста, подскажите, как правильно вывести изображение

Answer 1

Прежде всего, вам нужно запихнуть картинку в атрибут "src" элемента "img". Во-вторых, вам не нужно использовать ajax запрос для этого случая, т.к. вставив картинку в src -- запрос итак будет инициализирован вашим браузером.

Исходя из верних двух пунктов, чтобы ваш код стал рабочим, можно его модифицировать вот так (предполагается, что тэг с классом "for_img" - это ):

$(".button").click(function () {
        $(".for_img").attr('src', 'index.php?img_url=' + $(".img_url").val());
    });

Также, в скрипт php тебе придется изменить POST на GET:

$img = LoadJpeg($_GET["img_url"]);

P.S. Использовать @ (оператор подавления ошибок в php) - считается плохой практикой. Ошибки всегда лучше исправлять и логировать, а не прятать их.

READ ALSO
Как реализовать личный кабинет?

Как реализовать личный кабинет?

Делаю личный кабинет, который параллельно является и админкойАвторизация работает на сессиях

183
Добавление нового json в файл

Добавление нового json в файл

Доброго времени сутокСуть такова: нужно добавить новую запись в json файл

140
Вывод продвинутого рейтинга

Вывод продвинутого рейтинга

Есть таблица MySQL(users), там данные - id, name, pointsМне нужно получить 3 строчки: 1 человек, который по баллам больше, я и 1 человек, который по баллам...

226
сбор данных с другого сайта

сбор данных с другого сайта

Есть вот такой код на php и js:

159