每个黑色模块或角都为圆角的二维码

每个黑色模块或角都为圆角的二维码

如何开始适应这个有用的小包装(https://ctan.org/pkg/qrcode?lang=en)以启用如下调用:

\qrcode[rounded corners=0.1mm]{348b0b3}%

结果是能够控制每个黑色模块的角半径从 0 到模块半宽(在这种情况下会得到圆形模块)。

答案1

PSTricks 包pst-barcode为圆形模块提供一个选项:dotty

排版如下lualatex

\documentclass[border=1bp]{standalone}
\usepackage{pst-barcode}

\begin{document}
\makebox[1in][l]{\rule{0pt}{1in}%
  % option inkspread controls overlapping amount (in pt) of dots; <0 enlarges dots
  \psbarcode{348b0b3}{dotty inkspread=0.05 width=1 height=1}{qrcode}%
}
\end{document}

在此处输入图片描述

答案2

从技术上来说,这回答了您的问题,但结果可能不是您所期望的。选项1(注释和结果)为每个像素绘制一个 tikzpicture,因此速度很慢但非常灵活。选项 2(未注释且未显示)将任何字符缩放到像素大小,因此速度很快但灵活性较差。

平均能量损失

\documentclass{article}
\usepackage{qrcode,tikz,graphicx}
\makeatletter
\let\xqrcode@int\qrcode@int% store package macro
\def\qrcode@int{\let\xrule\rule% store old rule
  \let\rule\altrule% overwrite rule
  \xqrcode@int% package macro
  \let\rule\xrule% restore rule
}
\makeatother
% option 1: tikz (slow but flexible); tikz package
% \newcommand{\altrule}[2]{\tikzpicture% custom tikz rule
%     \fill[rounded corners=.3mm] (0,0) rectangle (#1,#2);
%   \endtikzpicture}
% option 2: any character (fast but less flexible); graphicx package
\newcommand{\altsym}{$\bullet$}% alt symbol
\newcommand{\altrule}[2]{% custom rule: logix
  \resizebox{#1}{!}{%
    \ifdim#2>0pt\altsym\else\phantom{\altsym}\fi}}
\begin{document}
\qrcode{348b0b3}
\end{document}

结果

结果

相关内容