PHP HELP: (изображение «bla bla» не может быть отображено, потому что оно содержит ошибки - PullRequest
1 голос
/ 12 марта 2012

Я сталкиваюсь с очень раздражающей проблемой в PHP, когда пытаюсь сделать водяные знаки полноразмерных изображений на моем веб-сайте.Водяной знак работал нормально в течение нескольких недель, но внезапно он начал показывать эту ошибку: изображение «бла бла» не может быть отображено, поскольку оно содержит ошибки

Я проверил все, и все, кажется, работает просто отлично!Я застрял, и я не знаю, что делать.

Вот мой php-файл с водяными знаками:

require_once "maincore.php";

if (isset($_GET['photo_id']) && isnum($_GET['photo_id'])) {

    $result = dbquery("SELECT td.*, tc.* FROM ".DB_PRODUCTS." td LEFT JOIN ".DB_PRODUCT_CATS." tc ON td.product_cat=tc.cat_id WHERE product_id='".$_GET['photo_id']."'");

    $data = dbarray($result);

        define("PHOTODIR", BASEDIR."downloads/images/");

        $parts = explode(".", $data['product_image']);

        $wm_file1 = $parts[0]."_w1.".$parts[1];

        $wm_file2 = $parts[0]."_w2.".$parts[1];

        if (!isset($_GET['full'])) {

            $wm_file = PHOTODIR.$wm_file1;

        } else {

            $wm_file = PHOTODIR.$wm_file2;

        }

        header("Content-type: image/jpg");

        $img = PHOTODIR.$data['product_image'];

        $cop = BASEDIR.$settings['photo_watermark_image'];

        if (preg_match("/.jpg/i", strtolower($img)) || preg_match("/.jpeg/i", strtolower($img))) {

            $image = imagecreatefromjpeg($img);

        } else if (preg_match("/.png/i", strtolower($img))) {

            $image = imagecreatefrompng($img);

        } else if (preg_match("/.gif/i", strtolower($img))) {

            $image = imagecreatefromgif($img);

            $sizeX = imagesx($image);

            $sizeY = imagesy($image);

            $image_tmp = imagecreatetruecolor($sizeX, $sizeY);

            $ica = imagecolorallocate($image_tmp, 255, 255, 255);

            imagefill($image_tmp, 0, 0, $ica);

            if ($settings['thumb_compression'] == "gd2") {

                imagecopyresampled($image_tmp, $image, 0, 0, 0, 0, $sizeX, $sizeY, $sizeX, $sizeY);

            } else {

                imagecopyresized($image_tmp, $image, 0, 0, 0, 0, $sizeX, $sizeY, $sizeX, $sizeY);

            }

            $tmp = PHOTODIR.md5(time().$img).'.tmp';

            imagejpeg($image_tmp, $tmp);

            imagedestroy($image_tmp);

            $image = imagecreatefromjpeg($tmp);

            unlink($tmp);

        }

        if (file_exists($cop) && preg_match("/.png/i", strtolower($cop)) && $settings['photo_watermark']) {

            $image2 = false;

            $image_dim_x = imagesx($image);

            $image_dim_y = imagesy($image);

            $copyright = imagecreatefrompng($cop);

            $copyright_dim_x = imagesx($copyright);

            $copyright_dim_y = imagesy($copyright);

            $where_x = $image_dim_x - $copyright_dim_x - 5;

            $where_y = $image_dim_y - $copyright_dim_y - 5;

            imagecopy ($image, $copyright, $where_x, $where_y, 0, 0, $copyright_dim_x, $copyright_dim_y);

            $thumb_w = 0; $thumb_h = 0;

            if (!isset($_GET['full'])) {

                if ($image_dim_x > $settings['photo_w'] || $image_dim_y > $settings['photo_h']) {

                    if ($image_dim_x  $image_dim_y) {

                        $thumb_w = $settings['photo_w'];

                        $thumb_h = round(($image_dim_y * $settings['photo_w']) / $image_dim_x);

                    } else {

                        $thumb_w = $settings['photo_w'];

                        $thumb_h = $settings['photo_h'];

                    }

                } else {

                    $thumb_w = $image_dim_x;

                    $thumb_h = $image_dim_y;

                }

                $image2 = imagecreatetruecolor($thumb_w, $thumb_h);

                if ($settings['thumb_compression'] == "gd2") {

                    imagecopyresampled($image2, $image, 0, 0, 0, 0, $thumb_w, $thumb_h, $image_dim_x, $image_dim_y);

                } else {

                    imagecopyresized($image2, $image, 0, 0, 0, 0, $thumb_w, $thumb_h, $image_dim_x, $image_dim_y);

                }

                imagedestroy($image);

            }

        }

        //create image

        if ($settings['photo_watermark_save']) { imagejpeg(($image2 ? $image2 : $image), $wm_file); }

        imagejpeg((isset($image2) && $image2 ? $image2 : $image));

        imagedestroy((isset($image2) && $image2 ? $image2 : $image));

        if (isset($copyright) && is_resource($copyright)) {  ImageDestroy($copyright); }

} else {

    redirect("index.php");

}

Пожалуйста, помогите мне!Спасибо!

1 Ответ

0 голосов
/ 12 марта 2012

php.ini установлен с включенными display_errors? Если это так, ваш код может выдавать предупреждение или уведомление, которое включается в двоичные данные изображения и портит их. Проверьте ваш журнал ошибок PHP на наличие новых записей.

Другая возможность заключается в том, что включаемый файл выводит пробелы, имея несколько пустых строк внизу под закрывающим тегом PHP.

...