You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用iTextSharp生成二维码时如何添加JPG等格式的图片?

问题解答

你无法直接将BarcodeQRCode构造函数的第一个字符串参数替换为图片实现需求,二维码本身仅支持存储文本类数据,不支持直接嵌入二进制图片内容。你可以根据实际需求选择以下两种方案实现:


方案1:二维码中间叠加JPG/PNG格式的Logo小图标

该方案是将小尺寸logo绘制在生成后的二维码中心区域,利用二维码的纠错能力保证正常扫码,是最常用的实现方式:

  • 首先调整二维码纠错等级为最高级ErrorCorrectionLevel.H,最大支持遮挡30%区域仍可正常识别,修改你的参数配置代码:
var paramQR = new Dictionary<EncodeHintType, object>();
paramQR.Add(EncodeHintType.CHARACTER_SET, "UTF-8");
// 替换为高纠错等级,适配中心logo叠加
paramQR.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
BarcodeQRCode qrcode = new BarcodeQRCode("你需要存储的文本/链接内容", 300, 300, paramQR);
  • 生成二维码后加载你的logo图片,缩放后绘制到二维码中心位置即可,示例代码如下(以生成PDF场景为例):
// 获得原始二维码图像对象
Image qrImage = qrcode.GetImage();
// 加载本地JPG格式logo
Image logo = Image.GetInstance("你的logo本地路径.jpg");
// 缩放logo到二维码尺寸的1/5,避免遮挡过多影响扫码
logo.ScaleToFit(qrImage.Width / 5, qrImage.Height / 5);
// 计算居中坐标,设置logo位置
logo.SetAbsolutePosition(
    qrImage.AbsoluteX + (qrImage.Width - logo.ScaledWidth) / 2,
    qrImage.AbsoluteY + (qrImage.Height - logo.ScaledHeight) / 2
);
// 按顺序添加到画布:先加二维码,再加logo覆盖在上方
document.Add(qrImage);
document.Add(logo);
  • 注意:logo总面积不要超过二维码的15%,否则会大幅降低扫码成功率

方案2:扫码后显示对应图片

如果你的需求是用户扫描二维码后直接查看目标图片,只需要先将图片上传到可公网访问的存储位置,拿到图片的访问URL,将URL作为字符串参数传入BarcodeQRCode构造函数的第一个参数即可,用户扫码后会自动跳转加载对应图片。


内容的提问来源于stack exchange,提问作者Nima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 02:39:01