Python用61行代码实现图片像素化的示例代码

  

<>强起因

  

看到网上的像素图片,感觉蛮有趣的,就打算用python一些公益诉讼类库写一个。
  

  

 Python用61行代码实现图片像素化的示例代码

  

<>强实现思路

  

把一张图片分成多个块,每个块的颜色都等于这个色块中颜色最多的颜色,如下图。
  

  

 Python用61行代码实现图片像素化的示例代码”> <br/>
  </p>
  <p>这个图取2×2的像素为块的大小,把快中颜色与每个颜色出现的数量存放到字典里,取最大的颜色,填充整个块。</p>
  <p> <强>具体实现</强> </p>
  
  <pre类=   从公益诉讼导入图像      def init ():   #设置每个像素区块的大小   block_size=75   img=Image.open (“a.jpg”)   #获取图片的宽高   宽度,高度=img.size   #获取像素点对应RGB颜色值,可以改变img_array中的值来改变颜色值   img_array=img.load ()   #为了处理最后的区块,加了一次循环   max_width=宽度+ block_size   max_height=身高+ block_size   x的范围(block_size - 1、max_width block_size):   y的范围(block_size - 1、max_height block_size):   #如果是最后一次循环,则x坐标等于宽度- 1   如果x==max_width - max_width % block_size - 1:   x=宽度- 1   #如果是最后一次循环,则x坐标等于高度- 1   如果y==max_height - max_height % block_size - 1:   y=身高- 1   #改变每个区块的颜色值   change_block (x, y, block_size img_array)   y +=block_size   x +=block_size   python img.save (r想:\ \ pixel_image \ awesome_copy.png”)   img.show ()      ”“”   :param x坐标x:   y: param y坐标:   :param区块大小black_size:   :param可操作图片数组img_array:   ”“”   def change_block (x, y, black_size img_array):      color_dist={}   block_pos_list=[]   pos_x的范围(-black_size + 1, - 1):   pos_y的范围(-black_size + 1, - 1):   # todo打印(x + pos_x y + pos_y)   block_pos_list。追加([x + pos_x y + pos_y])   在block_pos_list像素:   如果不是str (img_array[[0],像素扫描[1]])在color_dist.keys ():   color_dist (str (img_array[[0],像素扫描[1]]))=1   其他:   color_dist (str (img_array[[0],像素扫描[1]]))+=1   #键,在value=https://www.yisu.com/zixun/>值- ->键   new_dict={v: k, k, v在color_dist.items ()}   max_color=new_dict[马克斯(color_dist.values ()))   #将区块内所有的颜色值设置为颜色最多的颜色   对于一个在block_pos_list:   img_array[[0]、[1]]=元组(列表(map (int, max_color [1: len (max_color) - 1] .split (", "))))         def get_key (dict、价值):   返回(k, k v dict.items()如果v==值)         if __name__==癬_main__”:   init ()      

效果对比

  

 Python用61行代码实现图片像素化的示例代码”> <br/>
  </p>
  <p> <img src=

  

<强>总结

  

开源地址https://github.com/MasakiOvO/pixel_image
  

  

还有很多改进的地方,比如取色值的算法上,应该有更好的解决方法,应该用多进程来实现,这样程序速度会快很多.OvO

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

Python用61行代码实现图片像素化的示例代码