1.1 released, comes with damaged flag
This commit is contained in:
parent
5f77ef9d94
commit
3e8fc078db
|
@ -9,28 +9,33 @@ class color_types(object):
|
||||||
GREYSCALE_WITH_ALPHA = 4
|
GREYSCALE_WITH_ALPHA = 4
|
||||||
RGB_WITH_ALPHA = 6
|
RGB_WITH_ALPHA = 6
|
||||||
class PME(object):
|
class PME(object):
|
||||||
|
def _assert(self, statement):
|
||||||
|
if not self._damaged:
|
||||||
|
assert(statement)
|
||||||
def _int(self, binary):
|
def _int(self, binary):
|
||||||
return int.from_bytes(binary, byteorder="big")
|
return int.from_bytes(binary, byteorder="big")
|
||||||
def _bytes(self, integer, length):
|
def _bytes(self, integer, length):
|
||||||
return integer.to_bytes(length, "big")
|
return integer.to_bytes(length, "big")
|
||||||
def __init__(self, filename=False):
|
def __init__(self, filename=False, damaged=False):
|
||||||
|
self._damaged = damaged
|
||||||
self._init = False
|
self._init = False
|
||||||
self._magic_number = b'\x89PNG\r\n\x1a\n'
|
self._magic_number = b'\x89PNG\r\n\x1a\n'
|
||||||
self.filename = filename
|
self.filename = filename
|
||||||
self.chunks = []
|
self.chunks = []
|
||||||
if filename:
|
if filename:
|
||||||
f = open(self.filename, "rb")
|
f = open(self.filename, "rb")
|
||||||
assert(f.read(8) == self._magic_number)
|
self._assert(f.read(8) == self._magic_number)
|
||||||
while True:
|
while True:
|
||||||
length = f.read(4)
|
length = f.read(4)
|
||||||
label = f.read(4)
|
label = f.read(4)
|
||||||
data = f.read(self._int(length))
|
data = f.read(self._int(length))
|
||||||
crc = f.read(4)
|
crc = f.read(4)
|
||||||
|
if not self._damaged:
|
||||||
self._verify_crc(label, data, crc)
|
self._verify_crc(label, data, crc)
|
||||||
self.chunks.append([length, label, data, crc])
|
self.chunks.append([length, label, data, crc])
|
||||||
if label == b"IEND":
|
if label == b"IEND":
|
||||||
break
|
break
|
||||||
assert(self.chunks[0][1] == b"IHDR")
|
self._assert(self.chunks[0][1] == b"IHDR")
|
||||||
self.recalculate_properties()
|
self.recalculate_properties()
|
||||||
else:
|
else:
|
||||||
self.chunks = [
|
self.chunks = [
|
||||||
|
|
|
@ -128,3 +128,8 @@ In this example, we will draw a red sine wave on a new 100x100 file
|
||||||
|
|
||||||
The output should look something like this:
|
The output should look something like this:
|
||||||
![](http://i.imgur.com/vfa6lOR.png)
|
![](http://i.imgur.com/vfa6lOR.png)
|
||||||
|
|
||||||
|
## Changelog
|
||||||
|
|
||||||
|
### 1.1
|
||||||
|
Added the damaged argument to the constructor. If damaged is set to true, it will allow you to open potentially damaged png files, which maybe don't have IDAT as the first chunk, or have invalid CRCs
|
||||||
|
|
2
setup.py
2
setup.py
|
@ -1,7 +1,7 @@
|
||||||
#from distutils.core import setup
|
#from distutils.core import setup
|
||||||
from setuptools import setup
|
from setuptools import setup
|
||||||
setup(name='libpme',
|
setup(name='libpme',
|
||||||
version='1.0',
|
version='1.1',
|
||||||
description="PNG metadata editor library",
|
description="PNG metadata editor library",
|
||||||
author="Niles Rogoff",
|
author="Niles Rogoff",
|
||||||
author_email="me@niles.xyz",
|
author_email="me@niles.xyz",
|
||||||
|
|
Loading…
Reference in New Issue