[PHP]把图片切成圆形

今天在用世界上最好的编程语言开发时,遇到一个业务需求:将正方形图片切成圆形、长方形图片切成椭圆形,切去的部分设置成透明,然后保存成png。

例如OSC上我的头像是左边的正方形,要切成右边的圆形图片。

方形版本 圆形版本

PHP中图像处理库有GD、Imagick等,我个人喜欢GD的分隔,在PHP中使用对象有点脱裤子放屁——多此一举的感觉。不过网络上倒普遍推荐使用Imagick等其他库,认为GD库效率太低。

不过,针对本文的问题,GD库并没有提供现成Round Corners的方法,Stack Overflow上倒有人提供了自己的实现版本。不过,相比PHP的面向对象,我更厌恶大段的代码,既然Imagick中有现成的方法,那我就不客气地拿来主义了:

header('Content-Type: image/png');

$image = new Imagick('http://static.oschina.net/uploads/user/29/58387_100.jpg');
$image->setImageFormat('png');
$image->roundCorners($image->getImageWidth() / 2, $image->getImageHeight() / 2);
echo $image;
$image->destroy();

你可能感兴趣的:(PHP,图片,圆角)