使用PyPNG,如何阅读PNG?

问题描述

起初这似乎是一个愚蠢的问题-只需阅读文档即可-但我确实做到了,而且无法弄清楚如何读取文件并获得RGB值。简而言之,尚不清楚什么意味着什么。

有人可以告诉我如何正确读取带有RGB数据的文件吗?

解决方法

已阅读the docs,我了解您的困惑。我将参考an answer制作的Constantin,使用以下代码即可完成这项工作:

import png,array

point = (2,10) # coordinates of pixel to be painted red

reader = png.Reader(filename='image.png')
w,h,pixels,metadata = reader.read_flat()
pixel_byte_width = 4 if metadata['alpha'] else 3
pixel_position = point[0] + point[1] * w
new_pixel_value = (255,0) if metadata['alpha'] else (255,0)
pixels[
  pixel_position * pixel_byte_width :
  (pixel_position + 1) * pixel_byte_width] = array.array('B',new_pixel_value)

output = open('image-with-red-dot.png','wb')
writer = png.Writer(w,**metadata)
writer.write_array(output,pixels)
output.close()