Change data length/sign according to min-max values.
It enables support for float images, by the way.master
parent
8f1f754596
commit
c5591b3b06
18
database.py
18
database.py
|
@ -37,9 +37,21 @@ def le(n):
|
||||||
layer_count = 0
|
layer_count = 0
|
||||||
|
|
||||||
def layer(data, datamap, datatype, frag, meta=b""): # Add a layer
|
def layer(data, datamap, datatype, frag, meta=b""): # Add a layer
|
||||||
dtype = datamap.dtype
|
dmin = int(np.floor(datamap.min()))
|
||||||
itemsize = dtype.itemsize
|
dmax = int(np.floor(datamap.max()))
|
||||||
signed = dtype.kind == "i"
|
signed = dmin < 0
|
||||||
|
letter = "i" if signed else "u"
|
||||||
|
absmax = max(dmax, -dmin-1)
|
||||||
|
if absmax < 0x100:
|
||||||
|
itemsize = 1
|
||||||
|
elif absmax < 0x10000:
|
||||||
|
itemsize = 2
|
||||||
|
elif absmax < 0x100000000:
|
||||||
|
itemsize = 4
|
||||||
|
else:
|
||||||
|
itemsize = 8
|
||||||
|
|
||||||
|
datamap = datamap.astype("<"+letter+str(itemsize))
|
||||||
|
|
||||||
(Y, X) = datamap.shape
|
(Y, X) = datamap.shape
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue