C# 将索引像素转换为新文件位32。

3

有没有人有样本代码,可以打开tif文件,将其从索引像素复制到新的位图32并移到新位置?

我找到了这篇文章http://fci-h.blogspot.com/2008/02/c-indexed-pixel-problem.html,但是我还不太会把它们拼在一起。有没有可能只是在内存中读取所有内容而不实际创建新文件?

我的意思是这样的。我必须找到原始文件(我已经得到了),将文件复制到临时位置(我得到了)。我不明白的是,当我复制该新文件时,如何保持原始大小并为新文件提供32位图。

我无法在picturebox上绘制图像,因为C#不支持索引像素。


请重新表述以下内容:“从索引像素到新位图32复制到新位置?” - Paul Sasik
检查一下编辑,也许会有帮助。 - user222427
我认为如果您解释一下像素索引是什么意思,您可能会得到更多的关注。我已经做了大量的.Net绘画,但不熟悉这个概念。 - Paul Sasik
好的,不确定哪里不清楚。我该如何将索引像素格式的.tif转换为PixelFormat.Format32bppArgb? - user222427
我要关闭这个,对任何人来说都没有意义。 - user222427
2个回答

3
Bitmap newImage = new Bitmap(original);

这将使你的newImage以original的内容开始。不同之处在于,无论original的PixelFormat是什么,你最终都会得到newImage.PixelFormat == PixelFormat.Format32bppArgb。


这太棒了!! - MahdiS

2

我认为这个可以满足你的需求...

如果你不需要保存它,只需在执行DrawImage后使用'bm'即可,它是你的位图图像...

            Bitmap bm = (Bitmap)System.Drawing.Image.FromFile("TifFilePath.tif", true);
            Bitmap tmp = new Bitmap(bm.Width, bm.Height);
            Graphics grPhoto = Graphics.FromImage(tmp);
            grPhoto.DrawImage(bm, new Rectangle(0, 0, tmp.Width, tmp.Height), 0, 0, tmp.Width, tmp.Height, GraphicsUnit.Pixel);
            bm.Save("JPGFilePath.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
            grPhoto.Dispose();

记得释放 Graphics 对象。 - Lasse V. Karlsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接