python处理圆角图片、圆形图片的例子
2014-04-25 00:00
537 查看
效果图如下:
图1(头像图片剪成圆形的,其他为透明)
图2(给图片的4个角加椭圆)
以前没处理过,处理起来真是有点费力呀。
用到的模块:
1 头像图片剪成圆形的,其他为透明
搜索了好久,没有找到比较好的方法,有个博客(不好意思,忘记博客地址了)用了一个比较诡异的方法,我试了一下,除了处理jpg图片没有格式转换,其他的都没有问题,我当时就先按照那个方法来了
这个方法是 计算每个像素到原点(就是图片中心点)的距离来画圆形的
2、给图片的4个角加椭圆
用了这个方法后,想了一想,头像图片剪成圆形的,其他为透明,用这个方法也是可以的,于是画圆形有了下面的方法:
虽然最后我想要的都有了,但是通过对这2个问题的研究,我看到了python 图片处理的强大,好多还值得我去学习研究。
图1(头像图片剪成圆形的,其他为透明)
图2(给图片的4个角加椭圆)
以前没处理过,处理起来真是有点费力呀。
用到的模块:
import os, math import Image import ImageDraw
1 头像图片剪成圆形的,其他为透明
搜索了好久,没有找到比较好的方法,有个博客(不好意思,忘记博客地址了)用了一个比较诡异的方法,我试了一下,除了处理jpg图片没有格式转换,其他的都没有问题,我当时就先按照那个方法来了
def circle(): ima = Image.open("test.jpg").convert("RGBA") size = ima.size # 因为是要圆形,所以需要正方形的图片 r2 = min(size[0], size[1]) if size[0] != size[1]: ima = ima.resize((r2, r2), Image.ANTIALIAS) imb = Image.new('RGBA', (r2, r2),(255,255,255,0)) pima = ima.load() pimb = imb.load() r = float(r2/2) #圆心横坐标 for i in range(r2): for j in range(r2): lx = abs(i-r+0.5) #到圆心距离的横坐标 ly = abs(j-r+0.5)#到圆心距离的纵坐标 l = pow(lx,2) + pow(ly,2) if l <= pow(r, 2): pimb[i,j] = pima[i,j] imb.save("test_circle.png")
这个方法是 计算每个像素到原点(就是图片中心点)的距离来画圆形的
2、给图片的4个角加椭圆
def circle_corder_image(): im = Image.open("test.jpg").convert("RGBA") rad = 10 # 设置半径 circle = Image.new('L', (rad * 2, rad * 2), 0) draw = ImageDraw.Draw(circle) draw.ellipse((0, 0, rad * 2, rad * 2), fill=255) alpha = Image.new('L', im.size, 255) w, h = im.size alpha.paste(circle.crop((0, 0, rad, rad)), (0, 0)) alpha.paste(circle.crop((0, rad, rad, rad * 2)), (0, h – rad)) alpha.paste(circle.crop((rad, 0, rad * 2, rad)), (w – rad, 0)) alpha.paste(circle.crop((rad, rad, rad * 2, rad * 2)), (w – rad, h – rad)) im.putalpha(alpha) im.save('test_circle_corder.png')
用了这个方法后,想了一想,头像图片剪成圆形的,其他为透明,用这个方法也是可以的,于是画圆形有了下面的方法:
def circle_new(): ima = Image.open("test.jpg").convert("RGBA") size = ima.size r2 = min(size[0], size[1]) if size[0] != size[1]: ima = ima.resize((r2, r2), Image.ANTIALIAS) circle = Image.new('L', (r2, r2), 0) draw = ImageDraw.Draw(circle) draw.ellipse((0, 0, r2, r2), fill=255) alpha = Image.new('L', (r2, r2), 255) alpha.paste(circle, (0, 0)) ima.putalpha(alpha) ima.save('test_circle.png')
虽然最后我想要的都有了,但是通过对这2个问题的研究,我看到了python 图片处理的强大,好多还值得我去学习研究。
相关文章推荐
- python处理圆角图片、圆形图片的例子
- android中图片的处理(绘制圆形,圆角||缩略图)
- ios 图片圆角或圆形处理
- canvas处理图片为圆形或圆角矩形
- Android:继承ImageView 实现 圆角图片,圆形图片处理。
- iOS开发笔记-将图片处理成圆形或者说特定圆角
- 图片处理,圆形圆角描边
- 使用Glide对网络图片进行圆形和圆角的处理
- Android Xfermode 实战 实现圆形、圆角图片
- css圆形图片处理示例(方形图片变圆形图片)
- Android Xfermode 实战 实现圆形、圆角图片
- PHP将图片处理成圆角
- 自定义BitmapTransformation完美解决Glide加载圆角或者圆形图片
- IOS 图片阴影,圆角等处理
- Python -- 图片处理
- python 间接处理webp图片文件
- Android 绘制圆角图片(圆形图片,圆角矩形图片,圆角正方形图片)
- Python徒手实现识别手写数字—图片的读入与处理
- 圆角,倒影,圆形图片,截图,获取图片资源
- android中用Fresco实现圆角图片和圆形图片