php画像素点,PHP图像像素化?

由于最后的答案是理论上的,似乎还不够,我已经创建了一个实际的例子:

注意:这远非“理想”和完美的像素化效果函数,但它确实起作用.您可以根据自己的需要随意编辑.

/* Function to make pixelated images

* Supported input: .png .jpg .jpeg .gif

*

*

* Created on 24.01.2011 by Henrik Peinar

*/

/*

* image - the location of the image to pixelate

* pixelate_x - the size of "pixelate" effect on X axis (default 10)

* pixelate_y - the size of "pixelate" effect on Y axis (default 10)

* output - the name of the output file (extension will be added)

*/

function pixelate($image, $output, $pixelate_x = 20, $pixelate_y = 20)

{

// check if the input file exists

if(!file_exists($image))

echo 'File "'. $image .'" not found';

// get the input file extension and create a GD resource from it

$ext = pathinfo($image, PATHINFO_EXTENSION);

if($ext == "jpg" || $ext == "jpeg")

$img = imagecreatefromjpeg($image);

elseif($ext == "png")

$img = imagecreatefrompng($image);

elseif($ext == "gif")

$img = imagecreatefromgif($image);

else

echo 'Unsupported file extension';

// now we have the image loaded up and ready for the effect to be applied

// get the image size

$size = getimagesize($image);

$height = $size[1];

$width = $size[0];

// start from the top-left pixel and keep looping until we have the desired effect

for($y = 0;$y < $height;$y += $pixelate_y+1)

{

for($x = 0;$x < $width;$x += $pixelate_x+1)

{

// get the color for current pixel

$rgb = imagecolorsforindex($img, imagecolorat($img, $x, $y));

// get the closest color from palette

$color = imagecolorclosest($img, $rgb['red'], $rgb['green'], $rgb['blue']);

imagefilledrectangle($img, $x, $y, $x+$pixelate_x, $y+$pixelate_y, $color);

}

}

// save the image

$output_name = $output .'_'. time() .'.jpg';

imagejpeg($img, $output_name);

imagedestroy($img);

}

pixelate("test.jpg", "testing");

?>

这是在图像上创建像素化效果的示例函数.

以下是使用此功能的示例结果:

原版的:

像素化5px:

像素化10px:

像素化20px:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值