本篇文章给大家带来的内容是关于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实现图片像素化的代码实例相关推荐

  1. python电脑攻击_python写的ARP攻击代码实例 -电脑资料

    注:使用这个脚本需要安装scapy 包 最好在linux平台下使用,因为scapy包在windows上安装老是会有各种问题 复制代码代码如下: #coding:utf-8 #example :sudo ...

  2. python显示图片列表_python读取图片任意范围区域

    使用python进行图片处理,现在需要读出图片的任意一块区域,并将其转化为一维数组,方便后续卷积操作的使用. 下面使用两种方法进行处理: convert 函数 from PIL import Imag ...

  3. python 图像分析 边框_Python 去除图片纯色边框(qbit)

    前言Windows 10 2004 Python 3.8.3 Pillow 7.1.2 ImageMagick 7.0.10除了 Pillow 以外,qbit 还尝试了 skimage 和 openc ...

  4. python jpg压缩_python 实现图片批量压缩的示例

    项目中大量用到图片加载,由于图片太大,加载速度很慢,因此需要对文件进行统一压缩 一:导入包 from PIL import Image import os 二:获取图片文件的大小 def get_si ...

  5. python 人像素描_python实现图片彩色转化为素描

    本文实例为大家分享了Python将图片彩色转化为素描的具体代码,供大家参考,具体内容如下 第一种: from PIL import Image, ImageFilter, ImageOps img = ...

  6. python读取图片格式_Python读取图片尺寸、图片格式

    Python读取图片尺寸.图片格式 需要用到PIL模块,使用pip安装Pillow.Pillow是从PIL fork过来的Python 图片库. from PIL import Image im = ...

  7. python图像文件压缩_python实现图片压缩代码实例

    前言 项目中大量用到图片加载,由于图片太大,加载速度很慢,因此需要对文件进行统一压缩 一:导入包 from PIL import Image import os 二:获取图片文件的大小 def get ...

  8. python指纹识别_python之图片指纹(唯一性的)

    介绍 每张图片都有一个唯一性的指纹.就好像人类的指纹可以识别出这个人类似. 图片指纹是什么?(图片哈希) 用图片指纹进行相似图片的检测.这种技术通常被称为"感知图像hash"或是简 ...

  9. python相册图片处理_Python实现图片相似度计算

    图片相似度 _ 概述 今天在用一个软件清理手机时,看到了一个比较好的功能:相似图片删除.软件识别出相册中类似的图片,删除相似图片,进而释放手机存储. 上网查了这个功能的基本实现算法,有挺多算法求图片相 ...

最新文章

  1. 决策树算法python源代码_决的解释|决的意思|汉典“决”字的基本解释
  2. 按照Right-BICEP要求对实验二进行测试
  3. web自动化之鼠标事件
  4. Ardino基础教程 6_抢答器
  5. 线上分享 | AI产品经理之路——从入门到进阶
  6. vuejs怎么在服务器上发布部署
  7. Android 使用控件自定义背景实例
  8. linux中的定时器检测按键,STM32单片机利用定时器实现按键采集
  9. Dubbo 分布式事务一致性实现
  10. 树莓派有些WIFI连接不上
  11. 信号完整性(SI)电源完整性(PI)学习笔记(二十八)S参数在信号完整性中的应用(三)
  12. mysql中图书编号类型_练习1答案-数据库设计
  13. 51单片机教程:51单片机驱动四个8*8点阵,拼凑16*16点阵显示标准汉字。
  14. ATH9K Driver Learning Part VI: Difference Between Packet Preparation And Transmission Control
  15. MacBook Pro 休眠后五国,自动重启报错
  16. 【单片机毕业设计】【mcuclub-jj-002】基于单片机的三层电梯的设计
  17. s3c2450下AC97驱动研究
  18. 6-1 简单实现x的n次方 (7 分)
  19. 云电脑-kvm环境下云服务器配置常见命令
  20. 计算机二级python题库试卷2

热门文章

  1. DIY大神分享:i7 10700k配什么主板和显卡性价比高
  2. 安卓手机反应越来越慢怎么办_安卓手机怎么越用越慢?终于知道怎么解决了 这招太好用了!...
  3. excel日期格式改不了_我折腾了半天都没法求和,同事用Excel查找替换分分钟就搞定!...
  4. 别猜了,除了泷泽萝拉,小辣椒成功逆袭的秘密全在这里
  5. JavaScript 进阶第一章(分支结构)
  6. Python是男人就下100层
  7. CSGO配置很高但是FPS很低怎么办?
  8. 计算机原理之CPU缓存一致性
  9. 斗牛怎么玩法算法_干货:可转债怎么打新百分之百中签?详细讲解抢权配售,值得收藏...
  10. Android 10 获取设备唯一id