0

我有以下方法可以调整图像大小并将新调整大小的图像作为 TIFF 返回(我使用的是 AForge 库,它是 ResizeBilinear 对象的来源)。

private System.Drawing.Image shrinkImageBilinear(System.Drawing.Image original, float newWidthInches, float newHeightInches)
    {
        float imageProportion = (float)original.Width / (float)original.Height;
        float newWidthPixels = original.HorizontalResolution * newWidthInches;
        float newHeightPixels = newWidthPixels / imageProportion;

        ResizeBilinear filter = new ResizeBilinear((int)newWidthPixels, (int)newHeightPixels);
        Bitmap image = new Bitmap(original);
        image = filter.Apply(image);
        Rectangle imageRect = new Rectangle(0, 0, image.Size.Width, image.Size.Height);
        image = image.Clone(imageRect, PixelFormat.Format1bppIndexed);

        MemoryStream byteStream = new MemoryStream();
        image.SetResolution(200, 200);

        image.Save(byteStream, ImageFormat.Tiff);

        Image returnImage = System.Drawing.Image.FromStream(byteStream);
        return returnImage;
    }

我需要写的规范是 TIFF 标头中的光度解释不能利用调色板,因此光度解释只能是 0 或 1,在这种情况下它是 3,因为我使用的是 PixelFormat.Format1bppIndexed。我正在写的规范中的另一个要求是图像必须是 1bpp。

所以我的问题是,如何在不利用调色板(从而使光度解释为 1 或 0)、保持 1bpp、将分辨率保持在 200 ppi 并将格式保持为 TIFF 的情况下创建此图像?

4

1 回答 1

0

如果您查看 aforge 代码本身,(下载完整源代码)您将有足够的笔记来找到您的答案。

于 2012-11-06T19:05:35.663 回答