python代码图片_python在哪里打开

(43) 2024-07-28 14:01:05

python给图片打马赛克

  • 分类
  • 开始
      • 依赖
      • 献上代码
      • 效果
      • 代码剖析
        • 导入库
        • 整体打马代码和思路
          • 思路:
          • 代码:
        • 局部马赛克代码和思路
          • 思路:
          • 代码:
        • 输入文件名
        • 输入裁切位置
        • 局部打马
        • 输出部分
      • 代码github
            • 作者

分类

图片处理-PIL-python给图片打马赛克

开始

依赖

Pillow 5.2.0 python 3.7.7 

献上代码

# magic remark # -*- encoding:utf-8 -*- from PIL import Image def _mosaic(img): s = img.size img = img.resize((10,10)) img = img.resize(s) return img def mosaic(img,fx,fy,tx,ty): c = img.crop((fx,fy,tx,ty)) c = _mosaic(c) img.paste(c,(fx,fy,tx,ty)) return img if(__name__ == '__main__'): while(1): flag = False name = input('请输入文件名:') try: img = Image.open(name) flag = True except: print('无法读取文件') if(flag): break fx,fy,tx,ty = None,None,None,None while(1): flag = False name = input('请输入需要打马赛克的区域(x1,y1,x2,y2):') try: name = [int(i) for i in name.split(',')] if(len(name) != 4): raise ValueError fx,fy,tx,ty = name flag = True except: print('错误的格式') if(flag): break img = mosaic(img,fx,fy,tx,ty) while(1): cmd = input('处理完成,按1存储文件,按2显示文件,按3退出:') if(cmd == '1'): path = input('请输入存储路径:') try: img.save(path) exit() except: print('无法存储文件') elif(cmd == '2'): img.show() elif(cmd == '3'): exit() else: print('未知的命令:%s'%cmd) 

效果

python代码图片_python在哪里打开 (https://mushiming.com/)  第1张

代码剖析

导入库
# magic remark # -*- encoding:utf-8 -*- from PIL import Image 
整体打马代码和思路
思路:

主要精华在这几句代码上:

img = img.resize((10,10)) img = img.resize(s) 

图片在缩小时,会将像素合并
图片在放大时,会将像素复制
所以将图片缩小再放大,就会将合并后的像素复制好几分,就起到了马赛克的效果

代码:
def _mosaic(img): s = img.size img = img.resize((10,10)) img = img.resize(s) return img 
局部马赛克代码和思路
思路:

将局部裁切出来,将裁切出的图片整体打马,在粘回去

代码:
def mosaic(img,fx,fy,tx,ty): c = img.crop((fx,fy,tx,ty)) c = _mosaic(c) img.paste(c,(fx,fy,tx,ty)) return img 
输入文件名
if(__name__ == '__main__'): while(1): flag = False name = input('请输入文件名:') try: img = Image.open(name) flag = True except: print('无法读取文件') if(flag): break 
输入裁切位置
 fx,fy,tx,ty = None,None,None,None while(1): flag = False name = input('请输入需要打马赛克的区域(x1,y1,x2,y2):') try: name = [int(i) for i in name.split(',')] if(len(name) != 4): raise ValueError fx,fy,tx,ty = name flag = True except: print('错误的格式') if(flag): break 
局部打马
 img = mosaic(img,fx,fy,tx,ty) 
输出部分
 while(1): cmd = input('处理完成,按1存储文件,按2显示文件,按3退出:') if(cmd == '1'): path = input('请输入存储路径:') try: img.save(path) exit() except: print('无法存储文件') elif(cmd == '2'): img.show() elif(cmd == '3'): exit() else: print('未知的命令:%s'%cmd) 

代码github

程序github

作者

hit-road

拜拜,下课!

hit-road不定期跟新,不见不散!

THE END

发表回复