bs = bk[8*i : 8*(i+1)]
for j := 0; j < 8; j++ {
bb[j] = bs[j]
}
b[i] = Bits2Byte(bb)
}
return
}
func ReadShadowHeader(im image.Image) (b [8]byte, err error) {
var bm [64]byte
_, err = SetImage(im, func(index, x, y int, in, out image.Image) {
rgba := readRGBAColor(im.At(x, y))
if index < 64 {
bm[index] = uint8(rgba.R & 1)
}
})
if err != nil {
return
}
var bb [8]byte
var bs []byte
for i := 0; i < 8; i++ {
bs = bm[8*i : 8*(i+1)]
for j := 0; j < 8; j++ {
bb[j] = bs[j]
}
b[i] = Bits2Byte(bb)
}
return
}
func ReadShadowFlag(b [8]byte) (a [4]byte) {
for i := 0; i < 4; i++ {
a[i] = b[i]
}
return
}
func ReadShadowLength(b [8]byte) uint32 {
var bb [4]byte
for i := 4; i < 8; i++ {
bb[i-4] = b[i]
}
return Bytes2Uint32(bb)
}
func OpenImage(path string) (image.Image, error) {
im_read, err := os.Open(path)
defer im_read.Close()
if err != nil {
return nil, err
}
im, _, err := image.Decode(im_read)
if err != nil {
return nil, err
}
return im, nil
}
//modify image
func SetImage(im image.Image, f func(index, x, y int, in, out image.Image)) (out image.Image, err error) {
if f == nil {
return im, nil
}
index := 0
bounds := im.Bounds()
out = image.NewRGBA(bounds)










