首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDFium将pdf保存为图像指定颜色深度

PDFium将pdf保存为图像指定颜色深度
EN

Stack Overflow用户
提问于 2019-10-05 04:20:10
回答 1查看 1.1K关注 0票数 0

我正在尝试使用pdfium查看器将pdf导出为jpeg。如何指定jpeg图像的颜色深度?我必须使用System.Drawing.Imaging来编辑这个流吗?有没有人知道用pdfium这样做的方法?https://github.com/pvginkel/PdfiumViewer是我用来渲染pdf和创建图像的工具。

代码语言:javascript
复制
 using (var document = PdfiumViewer.PdfDocument.Load(file.ToString()))
                    {
                        for (int page = 0; page < document.PageCount; page++)
                        {
                            var image = document.Render(page, 2550, 3300, 72, 72, false);

                            image.Save(filepath + "\\" + filename + "-" + (page + 1) + ".jpg", ImageFormat.Jpeg);

                        }
                    }
EN

回答 1

Stack Overflow用户

发布于 2019-10-05 08:23:10

必须设置图像编码器属性才能更改它们。这是从头到尾的展示,但解释了我正在寻找的东西。

代码语言:javascript
复制
using System;
using System.Drawing;
using System.Drawing.Imaging;
class Example_SetColorDepth
{
    public static void Main()
    {
        Bitmap myBitmap;
        ImageCodecInfo myImageCodecInfo;
        Encoder myEncoder;
        EncoderParameter myEncoderParameter;
        EncoderParameters myEncoderParameters;

        // Create a Bitmap object based on a BMP file.
        myBitmap = new Bitmap(@"C:\Documents and Settings\All Users\Documents\My Music\music.bmp");

        // Get an ImageCodecInfo object that represents the TIFF codec.
        myImageCodecInfo = GetEncoderInfo("image/tiff");

        // Create an Encoder object based on the GUID
        // for the ColorDepth parameter category.
        myEncoder = Encoder.ColorDepth;

        // Create an EncoderParameters object.
        // An EncoderParameters object has an array of EncoderParameter
        // objects. In this case, there is only one
        // EncoderParameter object in the array.
        myEncoderParameters = new EncoderParameters(1);

        // Save the image with a color depth of 24 bits per pixel.
        myEncoderParameter =
            new EncoderParameter(myEncoder, 24L);
        myEncoderParameters.Param[0] = myEncoderParameter;
        myBitmap.Save("Shapes24bpp.tiff", myImageCodecInfo, myEncoderParameters);
    }

    private static ImageCodecInfo GetEncoderInfo(String mimeType)
    {
        int j;
        ImageCodecInfo[] encoders;
        encoders = ImageCodecInfo.GetImageEncoders();
        for(j = 0; j < encoders.Length; ++j)
        {
            if(encoders[j].MimeType == mimeType)
                return encoders[j];
        }
        return null;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58242774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档