• 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

  • 相关阅读:
    Python3 使用requests库读取本地保存的cookie文件实现免登录访问
    Python3 使用requests库登陆知乎并保存cookie为本地文件
    python中的ConfigParser模块
    python中json的使用
    python中的IO模块
    python中的apscheduler模块
    ubuntu14静态ip配置
    在ubuntu14中搭建邮箱服务器
    python 生成器
    python中列表生成式
  • 原文地址:https://www.cnblogs.com/wzwyc/p/9358441.html
Copyright © 2020-2023  润新知