Almazq
@Almazq
Новичок в мире IT

PHP GD Почему картинка не выводится в браузер?

Надо вывести картинку на браузер но не выходить можете помочь. Если убрать header выходить какие - то иероглифы .
надо через это вывести:
$im22 = imagecreatefrompng(
    "Resized/image-copynew.png");
header('Content-type: image/png');  
imagepng($im22);
imagedestroy($im22);


вот код PHP :

<?php

$img1 = "image/name.jpg";
$img2 = "image/filter.png";


$widthSize = 500; // ширина
$heightSize = 500; // высота
$opacityimgFilter = 30; // задаем прозрачность второго
$resizeFileName = "Resized"; // куда картинки после обработки положить

$new_name2 = basename($img2);
$imgFilter = $img2;
$imageorig = basename($img1);
$dir = mb_strcut($img1 , 0 , strlen($img1)-strlen($imageorig));

$img = $dir.$imageorig;

$images = glob($img);
$im_php = imagecreatefromjpeg($img);
$im_php = imagescale($im_php, $widthSize, $heightSize);
$new_height = imagesy($im_php);

imagejpeg($im_php, "image/resize-".$imageorig);
imagedestroy($im_php);

$img ="image/resize-".$imageorig;

$size = getimagesize($img); 
$height = $size[1]; 
$width = $size[0]; 
 
$imageTwo = $imgFilter;

$images = glob($imageTwo);
$im_php = imagecreatefrompng($imageTwo);
$im_php = imagescale($im_php, $widthSize, $heightSize);
$new_height = imagesy($im_php);

imagepng($im_php, $imageTwo);
imagedestroy($im_php);

$sizeWM = getimagesize($imageTwo); 
$heightWM = $sizeWM[1]; 
$widthWM = $sizeWM[0]; 
$opacity = $opacityimgFilter;

$image = imagecreatefromjpeg($img);
$watermark = imagecreatefrompng($imageTwo);

list($watermark_width, $watermark_height) = getimagesize($imageTwo);
 
$x = $width - $widthWM;
$y = $height - $heightWM;
 
imagecopymerge($image, $watermark, $x, $y, 0, 0, $watermark_width, $watermark_height, $opacity);


imagejpeg($image, $resizeFileName."/".$imageorig, 100);
imagedestroy($image);

unlink("image/resize-".$imageorig);


imagepng(
    imagecreatefromstring(
        file_get_contents($resizeFileName."/".$imageorig)
    ), 
    $resizeFileName."/".$imageorig
);


imageCreateCorners($resizeFileName."/".$imageorig , 50 , $resizeFileName);



$nameImgResult = $resizeFileName.basename($img1, "jpg")."png";

$im22 = imagecreatefrompng(
    "Resized/image-copynew.png");
header('Content-type: image/png');  
imagepng($im22);
imagedestroy($im22);

 

function imageCreateCorners($sourceImageFile, $radius , $last) {

    if (file_exists($sourceImageFile)) {
        $res = is_array($info = getimagesize($sourceImageFile));
    } 
    else $res = false;

    if ($res) {
        $w = $info[0];
        $h = $info[1];
        switch ($info['mime']) {
        case 'image/jpeg': $src = imagecreatefromjpeg($sourceImageFile);
            break;
        case 'image/gif': $src = imagecreatefromgif($sourceImageFile);
            break;
        case 'image/png': $src = imagecreatefrompng($sourceImageFile);
            break;
        default: 
            $res = false;
        }
    }

    if ($res) {

        $q = 10;
        $radius *= $q;

        do {
        $r = rand(0, 255);
        $g = rand(0, 255);
        $b = rand(0, 255);
        }
        while (imagecolorexact($src, $r, $g, $b) < 0);

        $nw = $w*$q;
        $nh = $h*$q;

        $img = imagecreatetruecolor($nw, $nh);
        $alphacolor = imagecolorallocatealpha($img, $r, $g, $b, 127);
        imagealphablending($img, false);
        imagesavealpha($img, true);
        imagefilledrectangle($img, 0, 0, $nw, $nh, $alphacolor);

        imagefill($img, 0, 0, $alphacolor);
        imagecopyresampled($img, $src, 0, 0, 0, 0, $nw, $nh, $w, $h);

        imagearc($img, $radius-1, $radius-1, $radius*2, $radius*2, 180, 270, $alphacolor);
        imagefilltoborder($img, 0, 0, $alphacolor, $alphacolor);
        imagearc($img, $nw-$radius, $radius-1, $radius*2, $radius*2, 270, 0, $alphacolor);
        imagefilltoborder($img, $nw-1, 0, $alphacolor, $alphacolor);
        imagearc($img, $radius-1, $nh-$radius, $radius*2, $radius*2, 90, 180, $alphacolor);
        imagefilltoborder($img, 0, $nh-1, $alphacolor, $alphacolor);
        imagearc($img, $nw-$radius, $nh-$radius, $radius*2, $radius*2, 0, 90, $alphacolor);
        imagefilltoborder($img, $nw-1, $nh-1, $alphacolor, $alphacolor);
        imagealphablending($img, true);
        imagecolortransparent($img, $alphacolor);

        $dest = imagecreatetruecolor($w, $h);
        imagealphablending($dest, false);
        imagesavealpha($dest, true);
        imagefilledrectangle($dest, 0, 0, $w, $h, $alphacolor);
        imagecopyresampled($dest, $img, 0, 0, 0, 0, $w, $h, $nw, $nh);

        $res = $dest;
        imagedestroy($src);
        imagedestroy($img);
    }
    $nameRes = basename($sourceImageFile , "jpg");
    imagepng($res, $last."/".$nameRes."png");
    imagedestroy($res);

}
?>
  • Вопрос задан
  • 133 просмотра
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Очень много странного, начиная с $dir = mb_strcut... вместо dirname()

Вы ведь просто накладываете одну картинку поверх другой, как маску?
Imagick делает это в пару строк https://stackoverflow.com/a/8725843
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы