Heim  >  Artikel  >  Backend-Entwicklung  >  Wie man einen Teil eines Bildes mit PHP mosaikiert

Wie man einen Teil eines Bildes mit PHP mosaikiert

jacklove
jackloveOriginal
2018-06-09 11:20:311927Durchsuche

PHP-Bild-Teilmosaik

Prinzip:

Ja für Erhöhen Sie für jedes Pixel des ausgewählten Bereichs im Bild die Breite und Höhe, um ein Rechteck zu erstellen. Die Rechtecke jedes Pixels überlappen sich und bilden einen Mosaikeffekt.

Dieses Beispiel verwendet imagecolorat der GD-Bibliothek, um die Pixelfarbe zu erhalten, und verwendet imagefilledrectangle, um das Rechteck zu zeichnen.

Rendering:

Der Code lautet wie folgt:

<?php
/** 图片局部打马赛克
* @param  String  $source 原图
* @param  Stirng  $dest   生成的图片
* @param  int     $x1     起点横坐标
* @param  int     $y1     起点纵坐标
* @param  int     $x2     终点横坐标
* @param  int     $y2     终点纵坐标
* @param  int     $deep   深度,数字越大越模糊
* @return boolean
*/
function imageMosaics($source, $dest, $x1, $y1, $x2, $y2, $deep){

    // 判断原图是否存在
    if(!file_exists($source)){
        return false;
    }

    // 获取原图信息
    list($owidth, $oheight, $otype) = getimagesize($source);

    // 判断区域是否超出图片
    if($x1>$owidth || $x1<0 || $x2>$owidth || $x2<0 || $y1>$oheight || $y1<0 || $y2>$oheight || $y2<0){
        return false;
    }

    switch($otype){
        case 1: $source_img = imagecreatefromgif($source); break;
        case 2: $source_img = imagecreatefromjpeg($source); break;
        case 3: $source_img = imagecreatefrompng($source); break;
        default:
            return false;
    }

    // 打马赛克
    for($x=$x1; $x<$x2; $x=$x+$deep){
        for($y=$y1; $y<$y2; $y=$y+$deep){
            $color = imagecolorat($source_img, $x+round($deep/2), $y+round($deep/2));
            imagefilledrectangle($source_img, $x, $y, $x+$deep, $y+$deep, $color);
        }
    }

    // 生成图片
    switch($otype){
        case 1: imagegif($source_img, $dest); break;
        case 2: imagejpeg($source_img, $dest); break;
        case 3: imagepng($source_img, $dest); break;
    }

    return is_file($dest)? true : false;

}

$source = &#39;source.jpg&#39;;
$dest = &#39;dest.jpg&#39;;

$flag = imageMosaics($source, $dest, 176, 98, 273, 197, 4);
echo &#39;<img src="&#39;.$source.&#39;">&#39;;
echo &#39;<img src="&#39;.$dest.&#39;">&#39;;

?>

In diesem Artikel wird erklärt, wie man Bilder teilweise über PHP mosaikiert. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

So erhalten Sie den MIME-Typ einer Datei über PHP-Informationen zu allen Benutzervideos

php-Zeichen Kodierung konvertierungsbezogener Inhalte




Das obige ist der detaillierte Inhalt vonWie man einen Teil eines Bildes mit PHP mosaikiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn