LEADTOOLS将QRBarcode添加到现有图像中

本文关键字:图像 QRBarcode 添加 LEADTOOLS | 更新日期: 2023-09-27 18:14:14

我当前的代码写qr码,但它覆盖了我的文件,只是qr码。我不知道如何调整qr码的大小,将其放置在文档的一个角落,而不是占用整个页面。也不确定RasterImage.Create是否意味着它只使用qr创建一个新文件并丢弃我的原始文件?

代码:-将PDF转换为Bmp添加QR然后保存回PDF

 public void PDFFileExample()
    {
        RasterCodecs codecs1 = new RasterCodecs();
        codecs1.Options.Pdf.InitialPath = @"C:'LEADTOOLS 18'Bin'Dotnet4'Win32";
        codecs1.Dispose();
        RasterCodecs codecs2 = new RasterCodecs();
        codecs2.ThrowExceptionsOnInvalidImages = true;
        System.Diagnostics.Debug.Assert(codecs2.Options.Pdf.InitialPath == @"C:'LEADTOOLS 18'Bin'Dotnet4'Win32");
        string pdfFile = @"C:'QRCodeTesting'bottomRight.pdf";
        string destFileName1 = @"C:'QRCodeTesting'bottomRightOutputTemp.pdf";
        string destFileName2 = @"C:'QRCodeTesting'bottomRightOutput.bmp";
        RasterCodecs codecs = new RasterCodecs();
        if (codecs.Options.Pdf.IsEngineInstalled)
        {
            // Resulting image pixel depth.
            codecs.Options.Pdf.Load.DisplayDepth = 24;
            codecs.Options.Pdf.Load.GraphicsAlpha = 4;
            codecs.Options.Pdf.Load.Password = "";
            // Type of font anti-aliasing to use.
            codecs.Options.Pdf.Load.TextAlpha = 1;
            codecs.Options.Pdf.Load.UseLibFonts = true;
            // Horizontal,vertical  display resolution in dots per inch.
            codecs.Options.RasterizeDocument.Load.XResolution = 150;
            codecs.Options.RasterizeDocument.Load.YResolution = 150;
            using (RasterImage image = codecs.Load(pdfFile, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1))
            {
                // Set the PDF version to be v1.4
                codecs.Options.Pdf.Save.Version = CodecsRasterPdfVersion.V14;
                try
                {
                    // Save the image back as PDF
                    codecs.Save(image, destFileName1, RasterImageFormat.RasPdf, 24);
                }
                catch (RasterException ex)
                {
                    if (ex.Code == RasterExceptionCode.FileFormat)
                        MessageBox.Show(string.Format("Image in file {0} is loaded", destFileName1));
                    else
                    {
                        MessageBox.Show(string.Format("Could not load the file {0}.{1}{2}", destFileName1, Environment.NewLine, ex.Message));
                    }
                }
            }
            // And load it back before saving it as BMP
            using (RasterImage image = codecs.Load(destFileName1))
            {
                codecs.Save(image, destFileName2, RasterImageFormat.Bmp, image.BitsPerPixel);
                writeQRTag(destFileName2);
            }
        }
        else
        {
            MessageBox.Show("PDF Engine is not found!");
        }
        // Clean up
        codecs.Dispose();
    }

QRCode编写方法

private void writeQRTag(string imageFileName)
    {
        BarcodeEngine engine = new BarcodeEngine();
        // Create the image to write the barcodes to
        int resolution = 300;
        using (RasterImage image = RasterImage.Create((int)(8.5 * resolution), (int)(11.0 * resolution), 1, resolution, RasterColor.FromKnownColor(RasterKnownColor.Red)))
        {
            // Write two QR barcodes
            WriteQRCode(engine.Writer, image, QRBarcodeSymbolModel.Model1AutoSize, "QR Data 1", true);
            // Save the image
            using (RasterCodecs codecs = new RasterCodecs())
            {
                codecs.Save(image, imageFileName, RasterImageFormat.CcittGroup4, 1);
            }
        }
    }

LEADTOOLS将QRBarcode添加到现有图像中

这是来自LEADTOOLS支持的Maen。

我检查了你的代码,注意到如下:

1)当你调用RasterImage. create()方法时,它将创建一个新的RasterImage对象,其中包含一个空的红色图像,随后将其传递给writeQRTag()函数,然后使用给定的文件名保存。当您保存它时,红色将被黑色替换,因为您使用的文件格式只支持黑色和白色。由于您使用的是新映像,旧映像将丢失(覆盖)。

如果你想从原始文件中写入图像上的条形码,你不应该创建一个新的图像。相反,您需要使用已经使用codecs.Load()加载的图像,并在其上写入条形码。

2)代码执行多个加载和保存操作。通常,您不需要这样做,除非您的应用程序需要不同的文件格式(PDF, BMP和TIFF)。

3)您创建我们的RasterCodecs对象的不同实例,但实际上只使用其中一个。代码中不需要4个RasterCodecs对象中的3个。

如果您仍然遇到使用我们的工具包的代码问题,您可以通过电子邮件将详细信息发送到support@leadtools.com,我们将尽力帮助您。