zoukankan      html  css  js  c++  java
  • C# TIFF图像开发

    NuGet安装控件:

    Install-Package BitMiracle.LibTiff.NET -Version 2.4.560

    实现代码:

            private BitmapSource TiffToBitmap(string fileName)
            {
                Tiff tif = Tiff.Open(fileName, "r");
                if (tif == null)
                {
                    return null;
                }
                // Find the width and height of the image
                FieldValue[] value = tif.GetField(TiffTag.IMAGEWIDTH);
                int width = value[0].ToInt();
    
                value = tif.GetField(TiffTag.IMAGELENGTH);
                int height = value[0].ToInt();
    
                // Read the image into the memory buffer
                int[] raster = new int[height * width];
    
                if (!tif.ReadRGBAImage(width, height, raster))
                {
                    tif.Close();
                    tif.Dispose();
                    return null;
                }
                tif.Close();
                tif.Dispose();
    
                WriteableBitmap _wb = new WriteableBitmap(width, height, 96, 96, PixelFormats.Pbgra32, null);
                Int32Rect _rect = new Int32Rect(0, 0, _wb.PixelWidth, _wb.PixelHeight);
                int _bytesPerPixel = (_wb.Format.BitsPerPixel + 7) / 8;
                int _stride = _wb.PixelWidth * _bytesPerPixel;
                int _arraySize = _stride * _wb.PixelHeight;
                byte[] bits = new byte[_arraySize];
                for (int y = 0; y < _wb.PixelHeight; y++)
                {
                    int rasterOffset = y * _wb.PixelWidth;
                    int bitsOffset = (_wb.PixelHeight - y - 1) * _stride;
    
                    for (int x = 0; x < _wb.PixelWidth; x++)
                    {
                        int rgba = raster[rasterOffset++];
                        bits[bitsOffset++] = (byte)((rgba >> 16) & 0xff);
                        bits[bitsOffset++] = (byte)((rgba >> 8) & 0xff);
                        bits[bitsOffset++] = (byte)(rgba & 0xff);
                        bits[bitsOffset++] = (byte)((rgba >> 24) & 0xff);
                    }
                }
    
                _wb.WritePixels(_rect, bits, _stride, 0);
    
                return _wb;
            }

    调用:

                MyImage.Source = TiffToBitmap("test.tif");

    Bit Miracle - Software for the PDF, TIFF, and JPEG formats.
    https://bitmiracle.com/

    Tiff转换Bitmap处理方法 - CSDN博客
    https://blog.csdn.net/kongwei521/article/details/8259461

  • 相关阅读:
    Jenkins操作手册 巨详细,一篇足矣!
    获取外网的IP的方法!
    Winson.Framework 2.0 搭建FLASH视频教程!
    JS读写COOKIE的方法!
    Winson.Framework 2.0发布!
    第一次自己做的电子杂志--《深博网志》!
    ProMesh.Net基本使用说明!
    ExtJS学习心得(三)
    安装SQL2000时,最后报安装配置服务失败的解决!
    ExtJS学习心得(二)
  • 原文地址:https://www.cnblogs.com/wzwyc/p/9358441.html
Copyright © 2011-2022 走看看