【问题标题】:Importing a multipage .tif to bitmap in C#在 C# 中将多页 .tif 导入位图
【发布时间】:2017-11-09 16:47:51
【问题描述】:

我正在尝试打开一个包含 12 页的 .tiff 文件。然后我将对单个像素进行一些数学运算,然后将其吐出。如何导入它然后拆分它?我正在尝试将其导入位图数组。我在开头声明了数组:

Bitmap[] tifBitmap = new Bitmap[10];

然后我想在这个方法中给每个写一个值:

private void splitTiff(String location)
    {
        int activePage;
        int pages;

        System.Drawing.Image image = System.Drawing.Image.FromFile(location);

        pages = image.GetFrameCount(FrameDimension.Page);



        for (int i = 0; i < 12; i++)
        {
            activePage = i + 1;

            image.SelectActiveFrame(FrameDimension.Page, i);

            //this is what I need to figure out
            tifBitmap[i - 1] = [save image slice here somehow];


        }
    }

现在我知道这段代码很乱,但它显示了这个想法。我怎么能做到这一点?

【问题讨论】:

    标签: c# image-processing bitmap


    【解决方案1】:

    好的,我接受这个问题是因为它与我的职业相关(我是一名影像 DBA),而且我知道答案。

    无论如何,这就是我发现的(可能是也可能不是最佳答案,但它似乎有效)

    您在 SelectActiveFrame 位上走在正确的轨道上,但我认为您需要做的是:

    1. 创建内存流
    2. 使用 .BMP 格式将图像保存到 MemoryStream
    3. 创建一个从 MemoryStream 加载的 Bitmap 对象

    这是我的示例代码:

    Image sampleTiffImage = Image.FromFile(@"C:\SomeExample.tif");
    
    int pageCount = sampleTiffImage.GetFrameCount(System.Drawing.Imaging.FrameDimension.Page);
    
    
    for (int pageNum = 0; pageNum < pageCount; pageNum++)
    {
        sampleTiffImage.SelectActiveFrame(System.Drawing.Imaging.FrameDimension.Page, pageNum);
    
        using (MemoryStream memStream = new MemoryStream())
        {
            sampleTiffImage.Save(memStream, ImageFormat.Bmp);
            using (Bitmap myBitmap = (Bitmap)Bitmap.FromStream(memStream))
            {
                myBitmap.Save(@"C:\someFol\" + pageNum + ".bmp");
                // note: the above line is saving to disk.  I'm doing it for testing purposes,
                // but you're going to want to copy it to your array.
            }
        }
    }
    

    我正在保存文件,但您希望将它们加载到您的数组中。

    希望有帮助!

    【讨论】:

    • 这是完美的。谢谢你。我确实有一个问题:将图像转换器放在那里的原因是什么?声明后好像没用。
    猜你喜欢
    • 2015-05-14
    • 2016-10-01
    • 2021-11-19
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 2011-04-20
    相关资源
    最近更新 更多