如何查看python模块参数_如何在Python zlib模块中设置参数

#! /usr/bin/python

""" Converts a list of list into gray-scale PNG image. """

__copyright__ = "Copyright (C) 2014 Guido Draheim"

__licence__ = "Public Domain"

import zlib

import struct

def makeGrayPNG(data, height = None, width = None):

def I1(value):

return struct.pack("!B", value & (2**8-1))

def I4(value):

return struct.pack("!I", value & (2**32-1))

# compute width&height from data if not explicit

if height is None:

height = len(data) # rows

if width is None:

width = 0

for row in data:

if width < len(row):

width = len(row)

# generate these chunks depending on image type

makeIHDR = True

makeIDAT = True

makeIEND = True

png = b"x89" + "PNGrnx1An".encode('ascii')

if makeIHDR:

colortype = 0 # true gray image (no palette)

bitdepth = 8 # with one byte per pixel (0..255)

compression = 0 # zlib (no choice here)

filtertype = 0 # adaptive (each scanline seperately)

interlaced = 0 # no

IHDR = I4(width) + I4(height) + I1(bitdepth)

IHDR += I1(colortype) + I1(compression)

IHDR += I1(filtertype) + I1(interlaced)

block = "IHDR".encode('ascii') + IHDR

png += I4(len(IHDR)) + block + I4(zlib.crc32(block))

if makeIDAT:

raw = b""

for y in xrange(height):

raw += b" " # no filter for this scanline

for x in xrange(width):

c = b" " # default black pixel

if y < len(data) and x < len(data[y]):

c = I1(data[y][x])

raw += c

compressor = zlib.compressobj()

compressed = compressor.compress(raw)

compressed += compressor.flush() #!!

block = "IDAT".encode('ascii') + compressed

png += I4(len(compressed)) + block + I4(zlib.crc32(block))

if makeIEND:

block = "IEND".encode('ascii')

png += I4(0) + block + I4(zlib.crc32(block))

return png

def _example():

with open("cross3x3.png","wb") as f:

f.write(makeGrayPNG([[0,255,0],[255,255,255],[0,255,0]]))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值