Maison >développement back-end >tutoriel php >Comment mosaïquer une partie d'une image via php

Comment mosaïquer une partie d'une image via php

jacklove
jackloveoriginal
2018-06-09 11:20:311974parcourir

Mosaïque partielle d'image PHP

Principe :

Oui pour chaque pixel de la zone sélectionnée dans l'image, augmentez la largeur et la hauteur pour créer un rectangle. Les rectangles de chaque pixel se chevauchent pour former un effet mosaïque.

Cet exemple utilise imagecolorat de la bibliothèque GD pour obtenir la couleur des pixels, et utilise imagefilledrectangle pour dessiner le rectangle.

Rendu :

Le code est le suivant :

<?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;;

?>

Cet article explique comment mosaïquer partiellement des images via PHP Pour plus de contenu connexe, veuillez faire attention au site Web chinois de PHP.

Recommandations associées :

Comment obtenir le type MIME d'un fichier via php Toutes les informations sur la vidéo utilisateur

Caractère php codage du contenu lié à la conversion




Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn