python图片像素化_Python实现图片像素化的代码实例
本篇文章给大家带来的内容是关于Python实现图片像素化的代码实例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
起因看到网上的像素图片,感觉蛮有趣的,就打算用python一些PIL类库写一个。
实现思路
把一张图片分成多个块,每个块的颜色都等于这个色块中颜色最多的颜色,如下图。
这个图取2×2的像素为块的大小,把快中颜色与每个颜色出现的数量存放到字典里,取最大的颜色,填充整个块。
具体实现from PIL import Image
def init():
# 设置每个像素区块的大小
block_size = 75
img = Image.open("a.jpg")
# 获取图片的宽高
width, height = img.size
# 获取像素点对应RGB颜色值,可以改变img_array中的值来改变颜色值
img_array = img.load()
# 为了处理最后的区块,加了一次循环
max_width = width + block_size
max_height = height + block_size
for x in range(block_size - 1, max_width, block_size):
for y in range(block_size - 1, max_height, block_size):
# 如果是最后一次循环,则x坐标等于width - 1
if x == max_width - max_width % block_size - 1:
x = width - 1
# 如果是最后一次循环,则x坐标等于height - 1
if y == max_height - max_height % block_size - 1:
y = height - 1
# 改变每个区块的颜色值
change_block(x, y, block_size, img_array)
y += block_size
x += block_size
img.save(r'D:\python\pixel_image\awesome_copy.png')
img.show()
"""
:param x坐标 x:
:param y坐标 y:
:param 区块大小 black_size:
:param 可操作图片数组 img_array:
"""
def change_block(x, y, black_size, img_array):
color_dist = {}
block_pos_list = []
for pos_x in range(-black_size + 1, 1):
for pos_y in range(-black_size + 1, 1):
# todo print(x + pos_x,y + pos_y)
block_pos_list.append([x + pos_x, y + pos_y])
for pixel in block_pos_list:
if not str(img_array[pixel[0], pixel[1]]) in color_dist.keys():
color_dist[str(img_array[pixel[0], pixel[1]])] = 1
else:
color_dist[str(img_array[pixel[0], pixel[1]])] += 1
# key-->value => value-->key
new_dict = {v: k for k, v in color_dist.items()}
max_color = new_dict[max(color_dist.values())]
# 将区块内所有的颜色值设置为颜色最多的颜色
for a in block_pos_list:
img_array[a[0], a[1]] = tuple(list(map(int, max_color[1:len(max_color) - 1].split(","))))
def get_key(dict, value):
return [k for k, v in dict.items() if v == value]
if __name__ == "__main__":
init()
效果对比
总结
还有很多改进的地方,比如取色值的算法上,应该有更好的解决方法,应该用多进程来实现,这样程序速度会快很多。
python图片像素化_Python实现图片像素化的代码实例相关推荐
- python电脑攻击_python写的ARP攻击代码实例 -电脑资料
注:使用这个脚本需要安装scapy 包 最好在linux平台下使用,因为scapy包在windows上安装老是会有各种问题 复制代码代码如下: #coding:utf-8 #example :sudo ...
- python显示图片列表_python读取图片任意范围区域
使用python进行图片处理,现在需要读出图片的任意一块区域,并将其转化为一维数组,方便后续卷积操作的使用. 下面使用两种方法进行处理: convert 函数 from PIL import Imag ...
- python 图像分析 边框_Python 去除图片纯色边框(qbit)
前言Windows 10 2004 Python 3.8.3 Pillow 7.1.2 ImageMagick 7.0.10除了 Pillow 以外,qbit 还尝试了 skimage 和 openc ...
- python jpg压缩_python 实现图片批量压缩的示例
项目中大量用到图片加载,由于图片太大,加载速度很慢,因此需要对文件进行统一压缩 一:导入包 from PIL import Image import os 二:获取图片文件的大小 def get_si ...
- python 人像素描_python实现图片彩色转化为素描
本文实例为大家分享了Python将图片彩色转化为素描的具体代码,供大家参考,具体内容如下 第一种: from PIL import Image, ImageFilter, ImageOps img = ...
- python读取图片格式_Python读取图片尺寸、图片格式
Python读取图片尺寸.图片格式 需要用到PIL模块,使用pip安装Pillow.Pillow是从PIL fork过来的Python 图片库. from PIL import Image im = ...
- python图像文件压缩_python实现图片压缩代码实例
前言 项目中大量用到图片加载,由于图片太大,加载速度很慢,因此需要对文件进行统一压缩 一:导入包 from PIL import Image import os 二:获取图片文件的大小 def get ...
- python指纹识别_python之图片指纹(唯一性的)
介绍 每张图片都有一个唯一性的指纹.就好像人类的指纹可以识别出这个人类似. 图片指纹是什么?(图片哈希) 用图片指纹进行相似图片的检测.这种技术通常被称为"感知图像hash"或是简 ...
- python相册图片处理_Python实现图片相似度计算
图片相似度 _ 概述 今天在用一个软件清理手机时,看到了一个比较好的功能:相似图片删除.软件识别出相册中类似的图片,删除相似图片,进而释放手机存储. 上网查了这个功能的基本实现算法,有挺多算法求图片相 ...
最新文章
- 决策树算法python源代码_决的解释|决的意思|汉典“决”字的基本解释
- 按照Right-BICEP要求对实验二进行测试
- web自动化之鼠标事件
- Ardino基础教程 6_抢答器
- 线上分享 | AI产品经理之路——从入门到进阶
- vuejs怎么在服务器上发布部署
- Android 使用控件自定义背景实例
- linux中的定时器检测按键,STM32单片机利用定时器实现按键采集
- Dubbo 分布式事务一致性实现
- 树莓派有些WIFI连接不上
- 信号完整性(SI)电源完整性(PI)学习笔记(二十八)S参数在信号完整性中的应用(三)
- mysql中图书编号类型_练习1答案-数据库设计
- 51单片机教程:51单片机驱动四个8*8点阵,拼凑16*16点阵显示标准汉字。
- ATH9K Driver Learning Part VI: Difference Between Packet Preparation And Transmission Control
- MacBook Pro 休眠后五国,自动重启报错
- 【单片机毕业设计】【mcuclub-jj-002】基于单片机的三层电梯的设计
- s3c2450下AC97驱动研究
- 6-1 简单实现x的n次方 (7 分)
- 云电脑-kvm环境下云服务器配置常见命令
- 计算机二级python题库试卷2
热门文章
- DIY大神分享:i7 10700k配什么主板和显卡性价比高
- 安卓手机反应越来越慢怎么办_安卓手机怎么越用越慢?终于知道怎么解决了 这招太好用了!...
- excel日期格式改不了_我折腾了半天都没法求和,同事用Excel查找替换分分钟就搞定!...
- 别猜了,除了泷泽萝拉,小辣椒成功逆袭的秘密全在这里
- JavaScript 进阶第一章(分支结构)
- Python是男人就下100层
- CSGO配置很高但是FPS很低怎么办?
- 计算机原理之CPU缓存一致性
- 斗牛怎么玩法算法_干货:可转债怎么打新百分之百中签?详细讲解抢权配售,值得收藏...
- Android 10 获取设备唯一id