none
读取网络图片流,怎么获得图片的高宽呢? RRS feed

  • 常规讨论

  • 用webclient读取一张图片流,由于是高度大于2048的,所以不能通过实例化bitmapimage来获取高宽(会被压缩),
    只能通过 WriteableBitmap wb = new WriteableBitmap(w, h);来读取图片,请问一下怎么获取高宽呢?仅仅有一个流,我听人说貌似可以读取流里面的二进制文件来获取到大小,求指教。。。
    2012年7月5日 2:36

全部回复

  • 可以根据图片格式来确定。比如png 图片格式。

     (1) 文件头数据块IHDR(header chunk):它包含有PNG文件中存储的图像数据的基本信息,并要作为第一个数据块出现在PNG数据流中,而且一个PNG数据流中只能有一个文件头数据块。
      文件头数据块由13字节组成,它的格式如表6-08所示。
      表6-08 PNG文件头键数据块的结构
      域的名称 字节数 说明
      Width 4 bytes 图像宽度,以像素为单位   (这个地方就是他的宽度)
      Height 4 bytes 图像高度,以像素为单位 (这个地方就是他的高度)
      Bit depth 1 byte 图像深度
      索引彩色图像:1,2,4或8
      灰度图像:1,2,4,8或16
      真彩色图像:8或16
      ColorType 1 byte 颜色类型:
      0:灰度图像,1,2,4,8或16
      2:真彩色图像,8或16
      3:索引彩色图像,1,2,4或8 4:带α通道数据的灰度图像,8或16
      6:带α通道数据的真彩色图像,8或16
      Compression method 1 byte 压缩方法(LZ77派生算法)
      Filter method 1 byte 滤波器方法
      Interlace method 1 byte 隔行扫描方法:0:非隔行扫描
      1:Adam7(由Adam M. Costello开发的7
      遍隔行扫描方法)
       

       其他图片格式都差不多。应该都有。。再二进制流里读取就可以了

      


    2012年7月16日 9:27