Ejemplo n.º 1
0
 private void decodeLastReadRowToByte(byte[] buffer, int bytesRead)              // see http://www.libpng.org/pub/png/spec/1.2/PNG-DataRep.html
 {
     if (ImgInfo.BitDepth <= 8)
     {
         Array.Copy(rowb, 1, buffer, 0, bytesRead);
     }
     else     // 16 bitspc
     {
         for (int i = 0, j = 1; j < bytesRead; i++, j += 2)
         {
             buffer[i] = rowb[j]; // 16 bits in 1 byte: this discards the LSB!!!
         }
     }
     if (ImgInfo.Packed && unpackedMode)
     {
         ImageLine.unpackInplaceByte(ImgInfo, buffer, buffer, false);
     }
 }
Ejemplo n.º 2
0
        public static byte[] Unpack(ImageInfo imgInfo, byte[] src, byte[] dst, bool scale)
        {
            int len1 = imgInfo.SamplesPerRow;
            int len0 = imgInfo.SamplesPerRowPacked;

            if (dst == null || dst.Length < len1)
            {
                dst = new byte[len1];
            }
            if (imgInfo.Packed)
            {
                ImageLine.unpackInplaceByte(imgInfo, src, dst, scale);
            }
            else
            {
                Array.Copy(src, 0, dst, 0, len0);
            }
            return(dst);
        }
Ejemplo n.º 3
0
 public void decodeLastReadRowToByte(byte[] buffer, int bytesRead)
 {
     if (ImgInfo.BitDepth <= 8)
     {
         Array.Copy(rowb, 1, buffer, 0, bytesRead);
     }
     else
     {
         int num = 0;
         for (int i = 1; i < bytesRead; i += 2)
         {
             buffer[num] = rowb[i];
             num++;
         }
     }
     if (ImgInfo.Packed && unpackedMode)
     {
         ImageLine.unpackInplaceByte(ImgInfo, buffer, buffer, scale: false);
     }
 }