条形码有很多种形状和形式,但它们都有一个“符号”的概念。这可以是一维线性条码中的竖条,也可以是二维条码中的一个点。以下是常用条码的例子:
![]() |
![]() |
UPC-A的例子。典型的一维条码 |
QR的例子。典型的二维条码 |
符号的宽度称为X模块条码的一种,通常以1/1000英寸为单位表示。该值必须有足够的大小,以便软件和专用的条形码阅读器能够正确读取条形码。X模块的典型值是0.03英寸。在成像方面,这个值依赖于图像的分辨率,例如分辨率为300 DPI的图像;这个值是9像素,以此类推。2像素值通常是软件可读的X模块最小大小。
条形码的另一个特点是宽高比。一些条形码有宽松的规则,如UPC-A,而另一些则有限制,如QR,必须总是方形。
在编写条形码时,软件必须确保最终结果满足上述条件。否则,最终的条码图像将不可读。
的BarcodeWriter对象包含WriteBarcode用于将条形码写入图像的方法。该方法接受类型的对象BarcodeData其中包含了条形码的符号、数据、位置和大小。的位置和大小指定BarcodeData。界限财产。
对于此帮助主题中的所有代码片段,请使用以下方法:
barcodeWriter
是一个BarcodeWriter对象
图像
是一个RasterImage物体的分辨率为300dpi
本节将讨论以下属性:
OneDBarcodeWriteOptions。UseXModule而且OneDBarcodeWriteOptions。XModule
GS1DatabarStackedBarcodeWriteOptions。UseXModule而且GS1DatabarStackedBarcodeWriteOptions。XModule
PostNetPlanetBarcodeWriteOptions。UseXModule而且PostNetPlanetBarcodeWriteOptions。XModule
PatchCodeBarcodeWriteOptions。UseXModule而且PatchCodeBarcodeWriteOptions。XModule
在写入一维条码时,可以通过以下两种方式设置条码的大小:
在这种模式下,指示条形码编写器从指定的宽度和高度计算X模块值。为此,将“Use X Module”属性值设置为假,并设置所需的宽度和高度BarcodeData。界限.
例子:在图像上写一个UPC-A条码,宽度和高度= 400 * 400像素。
昏暗的数据作为BarcodeData = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA)
数据。边界=新LeadRect(0,0,400,400)
昏暗的writeOptions作为OneDBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、OneDBarcodeWriteOptions)
'确保X模块被禁用
writeOptions。UseXModule =假
barcodeWriter。WriteBarcode(image, data, writeOptions)
BarcodeData data = BarcodeData. createdefaultbarcodedata (BarcodeSymbology.UPCA);
数据。边界=新LeadRect(0,0,400,400);
OneDBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions作为OneDBarcodeWriteOptions;
//确认X模块被禁用
writeOptions。UseXModule =假;
barcodeWriter。WriteBarcode(image, data, writeOptions);
结果:条形码的大小是400 * 400像素。
注意,并不是所有1D条形码类型都允许指定任意的宽高比(宽度和高度值),一些条形码标准规定条形码宽度和高度必须有特定的宽高比,例如,如果您更改上面的代码以使用POSTNET条形码类型,结果将会不同。
例子:在图像上写一个宽度和高度= 400 * 400像素的POSTNET条形码。
昏暗的数据作为BarcodeData = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.PostNet)
数据。边界=新LeadRect(0,0,400,400)
昏暗的writeOptions作为PostNetPlanetBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、PostNetPlanetBarcodeWriteOptions)
'确保X模块被禁用
writeOptions。UseXModule =假
barcodeWriter。WriteBarcode(image, data, writeOptions)
BarcodeData data = BarcodeData. createdefaultbarcodedata (BarcodeSymbology.PostNet);
数据。边界=新LeadRect(0,0,400,400);
PostNetPlanetBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions作为PostNetPlanetBarcodeWriteOptions;
//确认X模块被禁用
writeOptions。UseXModule =假;
barcodeWriter。WriteBarcode(image, data, writeOptions);
结果:条形码的尺寸是400 * 30像素。
将条形码边界的高度设置为0,以指示引擎根据预定义的宽高比从宽度计算条形码的高度。
例子:在图像上写一个UPC-A条码,宽度和高度= 400 * 0像素。
昏暗的数据作为BarcodeData = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA)
数据。边界=新LeadRect(0,0,400,0)
昏暗的writeOptions作为OneDBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、OneDBarcodeWriteOptions)
'确保X模块被禁用
writeOptions。UseXModule =假
barcodeWriter。WriteBarcode(image, data, writeOptions)
BarcodeData data = BarcodeData. createdefaultbarcodedata (BarcodeSymbology.UPCA);
数据。边界=新LeadRect(0,0,400, 0);
OneDBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions作为OneDBarcodeWriteOptions;
//确认X模块被禁用
writeOptions。UseXModule =假;
barcodeWriter。WriteBarcode(image, data, writeOptions);
结果:条形码的尺寸是400 * 134像素
除PatchCode外,1D条形码的默认纵横比都是1/3,PatchCode的纵横比是5。
在上述所有模式中,引擎将从指定的宽度值计算X模块。如果结果值是非法的(小于0.03英寸),则类型的异常BarcodeException宽度代码设置为BarcodeExceptionCode。InvalidWidth或BarcodeExceptionCode。InvalidHeight将抛出。
例子:在图像上写一个UPC-A条码,宽度和高度都太小(10 * 10像素)。
昏暗的数据作为BarcodeData = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA)
数据。边界=新LeadRect(0,0,10,10)
昏暗的writeOptions作为OneDBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、OneDBarcodeWriteOptions)
'确保X模块被禁用
writeOptions。UseXModule =假
barcodeWriter。WriteBarcode(image, data, writeOptions)
BarcodeData data = BarcodeData. createdefaultbarcodedata (BarcodeSymbology.UPCA);
数据。边界=新LeadRect(0,0,10,10);
OneDBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions作为OneDBarcodeWriteOptions;
//确认X模块被禁用
writeOptions。UseXModule =假;
barcodeWriter。WriteBarcode(image, data, writeOptions);
结果:BarcodeException代码=BarcodeExceptionCode。InvalidWidth或BarcodeExceptionCode。InvalidHeight将抛出。
在此模式下,使用特定的X Module值。要实现这一点,您可以将“Use X Module”属性值设置为真正的.
例子:在图像上用XModule = 0.03英寸写一个UPC-A条码。
昏暗的数据作为BarcodeData = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA)
数据。边界=新LeadRect(0,0,0,0)
昏暗的writeOptions作为OneDBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、OneDBarcodeWriteOptions)
使用X模块
writeOptions。UseXModule =真正的
writeOptions。XModule = 30
barcodeWriter。WriteBarcode(image, data, writeOptions)
BarcodeData data = BarcodeData. createdefaultbarcodedata (BarcodeSymbology.UPCA);
数据。边界=新LeadRect(0,0,0,0);
OneDBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions作为OneDBarcodeWriteOptions;
//使用X模块
writeOptions。UseXModule =真正的;
writeOptions。XModule = 30;
barcodeWriter。WriteBarcode(image, data, writeOptions);
结果:条码宽度由数据的大小决定(所需的栏数和空格数、文本选项等)。高度是根据符号的首选长宽比计算的。
在使用X Module时指定宽度或高度(两者都有,或者设置一个值,另一个值为0)。在本例中,这些边界被用作条形码的最大宽度和高度,如果结果条形码的宽度或高度大于指定的值,则出现类型异常BarcodeException宽度设置为BarcodeExceptionCode。InvalidWidth或BarcodeExceptionCode。InvalidHeight将抛出。
例子:在图像上写一个UPC-A条形码,用XModule = 0.03英寸和边界,这太小了。
昏暗的数据作为BarcodeData = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA)
数据。边界=新LeadRect(0,0,10,10)
昏暗的writeOptions作为OneDBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、OneDBarcodeWriteOptions)
使用X模块
writeOptions。UseXModule =真正的
writeOptions。XModule = 30
barcodeWriter。WriteBarcode(image, data, writeOptions)
BarcodeData data = BarcodeData. createdefaultbarcodedata (BarcodeSymbology.UPCA);
数据。边界=新LeadRect(0,0,10,10);
OneDBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions作为OneDBarcodeWriteOptions;
//使用X模块
writeOptions。UseXModule =真正的;
writeOptions。XModule = 30;
barcodeWriter。WriteBarcode(image, data, writeOptions);
结果:BarcodeException代码=BarcodeExceptionCode。InvalidWidth或BarcodeExceptionCode。InvalidHeight将抛出。
的左、顶位置BarcodeData。界限在编写一维条码时专用。
例子:在图片左上角100,200的位置写上UPC-A条码,尺寸为400 * 100。以像素为单位。
昏暗的数据作为BarcodeData = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA)
数据。边界=新LeadRect(100, 200, 400, 100)
昏暗的writeOptions作为OneDBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、OneDBarcodeWriteOptions)
'确保X模块被禁用
writeOptions。UseXModule =假
barcodeWriter。WriteBarcode(image, data, writeOptions)
BarcodeData data = BarcodeData. createdefaultbarcodedata (BarcodeSymbology.UPCA);
数据。边界=新LeadRect(100, 200, 400, 100);
OneDBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions作为OneDBarcodeWriteOptions;
//确认X模块被禁用
writeOptions。UseXModule =假;
barcodeWriter。WriteBarcode(image, data, writeOptions);
结果:条形码在100,200大小为400 * 100像素。
的BarcodeData。界限属性的类型为LeadRect.这允许您指定位置和大小以及像素以外的单位。
例子:在1.2英寸的位置写一个UPC-A条码,大小等于3乘1英寸。
私人共享函数InchesToPixels (按值传递矩形作为LeadRectD,按值传递dpiX作为整数,按值传递dpiY作为整数)作为LeadRect
如果dpiX = 0然后
dpiX = 96
结束如果
如果dpiY = 0然后
dpiY = 96
结束如果
昏暗的像素作为var = LeadRectD.FromLTRB(矩形。左* dpiX / 96.0,矩形. top * dpiY / 96.0,矩形.右* dpiX / 96.0,矩形. bottom * dpiY / 96.0)
返回pixels.ToLeadRect ()
结束函数
昏暗的图像作为RasterImage = RasterImage。创建(100,100,24,300,RasterColor.White)
昏暗的barcodeWriter作为BarcodeWriter =没有什么
昏暗的数据作为BarcodeData = BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.UPCA)
数据。边界= InchesToPixels (新LeadRectD(1,2,3,1),图像。XResolution,形象。YResolution)
昏暗的writeOptions作为OneDBarcodeWriteOptions = TryCast(barcodeWriter.GetDefaultOptions(data. symbolic), OneDBarcodeWriteOptions)
'确保X模块被禁用
writeOptions。UseXModule =假
barcodeWriter。WriteBarcode(image, data, writeOptions)
私人静态LeadRect InchesToPixels (LeadRectD矩形,intdpiX,intdpiY)
{
如果(dpiX == 0) dpiX = 96;
如果(dpiY = 0) dpiY = 96;
var像素= LeadRectD。FromLTRB (
left * dpiX / 96.0,
* dpiY / 96.0,
* dpiX / 96.0,
* dpiY / 96.0);
返回pixels.ToLeadRect ();
}
BarcodeData data = BarcodeData. createdefaultbarcodedata (BarcodeSymbology.UPCA);
数据。边界= InchesToPixels (新LeadRectD(1,2,3,1),图像。XResolution,形象。YResolution);
OneDBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions作为OneDBarcodeWriteOptions;
//确认X模块被禁用
writeOptions。UseXModule =假;
barcodeWriter。WriteBarcode(image, data, writeOptions);
结果:条形码在1.2英寸,尺寸为3乘1英寸。
本节将讨论以下属性:
DatamatrixBarcodeWriteOptions。XModule,DatamatrixBarcodeWriteOptions。HorizontalAlignment而且DatamatrixBarcodeWriteOptions。VerticalAlignment
PDF417BarcodeWriteOptions。XModule,PDF417BarcodeWriteOptions。HorizontalAlignment而且PDF417BarcodeWriteOptions。VerticalAlignment
MicroPDF417BarcodeWriteOptions。XModule,MicroPDF417BarcodeWriteOptions。HorizontalAlignment而且MicroPDF417BarcodeWriteOptions。VerticalAlignment
QRBarcodeWriteOptions。XModule,QRBarcodeWriteOptions。HorizontalAlignment而且QRBarcodeWriteOptions。VerticalAlignment
所有2D条形码写操作都需要一个X模块。的宽度和高度BarcodeData。界限仅用作条码的最大宽度和高度。
例子:写QR,不指定宽度和高度。
昏暗的数据作为QRBarcodeData =DirectCast(BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)、QRBarcodeData)
数据。边界=新LeadRect(0,0,0,0)
昏暗的writeOptions作为QRBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、QRBarcodeWriteOptions)
设置X模块
writeOptions。XModule = 30
barcodeWriter。WriteBarcode(image, data, writeOptions)
QRBarcodeData data = BarcodeData.CreateDefaultBarcodeData(barcodeymbology . qr)作为QRBarcodeData;
数据。边界=新LeadRect(0,0,0,0);
QRBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions(data. symbolic)作为QRBarcodeWriteOptions;
//设置X模块
writeOptions。XModule = 30;
barcodeWriter。WriteBarcode(image, data, writeOptions);
结果:从XModule计算大小的条形码(在本例中约为一英寸)。
大多数2D条形码都有严格的宽高比。例如,QR条形码必须是正方形的(具有相等的宽度和高度),因此这些值只用作条形码的最大宽度和高度,如果结果条形码的宽度或高度大于指定的值,则类型异常BarcodeException,宽度设置为BarcodeExceptionCode。InvalidWidth或BarcodeExceptionCode。InvalidHeight,将被抛出
例子:在图像上用XModule = 0.03英寸写一个QR条码,边界太小。
昏暗的数据作为QRBarcodeData =DirectCast(BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)、QRBarcodeData)
数据。边界=新LeadRect(0,0,10,10)
昏暗的writeOptions作为QRBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、QRBarcodeWriteOptions)
'使用默认XModule,它是30
barcodeWriter。WriteBarcode(image, data, writeOptions)
QRBarcodeData data = BarcodeData.CreateDefaultBarcodeData(barcodeymbology . qr)作为QRBarcodeData;
数据。边界=新LeadRect(0,0,10,10);
QRBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions(data. symbolic)作为QRBarcodeWriteOptions;
//使用默认的XModule,它是30
barcodeWriter。WriteBarcode(image, data, writeOptions);
结果:BarcodeException代码=BarcodeExceptionCode。InvalidWidth或BarcodeExceptionCode。InvalidHeight将抛出。
所有2D条形码还支持一个对齐值,可用于控制条形码写入边界内的位置。
例子:在图像中间写一个二维码。
昏暗的数据作为QRBarcodeData =DirectCast(BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)、QRBarcodeData)
“使用所有的图像
数据。边界=新LeadRect(0, 0,形象。ImageWidth image.ImageHeight)
昏暗的writeOptions作为QRBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、QRBarcodeWriteOptions)
将中间的条形码水平和垂直对齐
writeOptions。HorizontalAlignment = BarcodeAlignment。中心
writeOptions。VerticalAlignment = BarcodeAlignment。中心
barcodeWriter。WriteBarcode(image, data, writeOptions)
QRBarcodeData data = BarcodeData.CreateDefaultBarcodeData(barcodeymbology . qr)作为QRBarcodeData;
//使用所有的图像
数据。边界=新LeadRect(0, 0,形象。ImageWidth image.ImageHeight);
QRBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions(data. symbolic)作为QRBarcodeWriteOptions;
//将中间的条形码水平和垂直对齐
writeOptions。HorizontalAlignment = BarcodeAlignment.Center;
writeOptions。VerticalAlignment = BarcodeAlignment.Center;
barcodeWriter。WriteBarcode(image, data, writeOptions);
结果:位于图像中心的条形码。
例子:在图片的右下角写上二维码。
昏暗的数据作为QRBarcodeData =DirectCast(BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)、QRBarcodeData)
“使用所有的图像
数据。边界=新LeadRect(0, 0,形象。ImageWidth image.ImageHeight)
昏暗的writeOptions作为QRBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、QRBarcodeWriteOptions)
“将条形码在底部的角落对齐。
writeOptions。HorizontalAlignment = BarcodeAlignment。远
writeOptions。VerticalAlignment = BarcodeAlignment。远
barcodeWriter。WriteBarcode(image, data, writeOptions)
QRBarcodeData data = BarcodeData.CreateDefaultBarcodeData(barcodeymbology . qr)作为QRBarcodeData;
//使用所有的图像
数据。边界=新LeadRect(0, 0,形象。ImageWidth image.ImageHeight);
QRBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions(data. symbolic)作为QRBarcodeWriteOptions;
//对齐条形码在底角
writeOptions。HorizontalAlignment = BarcodeAlignment.Far;
writeOptions。VerticalAlignment = BarcodeAlignment.Far;
barcodeWriter。WriteBarcode(image, data, writeOptions);
结果:条码在图像的右下边缘。
PDF417和MicroPDF417条形码允许您设置“符号”的纵横比。这允许您创建任何水平和垂直大小的条形码。指PDF417BarcodeWriteOptions。XModuleAspectRatio而且MicroPDF417BarcodeWriteOptions。XModuleAspectRatio.
的BarcodeWriter类包含CalculateBarcodeDataBounds方法,该方法允许您基于指定的选项计算条形码大小。
例子:计算X模块0.03处二维码的大小。
昏暗的数据作为QRBarcodeData =DirectCast(BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)、QRBarcodeData)
“数据的价值并不重要。界限。它会被改变的
昏暗的writeOptions作为QRBarcodeWriteOptions =DirectCast(barcodeWriter.GetDefaultOptions (data.Symbology)、QRBarcodeWriteOptions)
设置X模块
writeOptions。XModule = 30
'如果写入此图像,则计算以像素为单位的大小
barcodeWriter。CalculateBarcodeDataBounds (新LeadRect(0, 0,形象。ImageWidth image.ImageHeight)的形象。XResolution,形象。YResolution、数据writeOptions)
控制台。WriteLine ("{0} *{1}像素", data.Bounds。宽度,data.Bounds.Height)
QRBarcodeData data = BarcodeData.CreateDefaultBarcodeData(barcodeymbology . qr)作为QRBarcodeData;
//不管data的值是多少。界限。它会被改变的
QRBarcodeWriteOptions writeOptions = barcodeWriter.GetDefaultOptions(data. symbolic)作为QRBarcodeWriteOptions;
//设置X模块
writeOptions。XModule = 30;
//如果写入此图像,则计算像素大小
barcodeWriter。CalculateBarcodeDataBounds (新LeadRect(0, 0,形象。ImageWidth image.ImageHeight)的形象。XResolution,形象。YResolution、数据writeOptions);
控制台。WriteLine ("{0} *{1}像素", data.Bounds。宽度,data.Bounds.Height);
结果:对于300 DPI的图像,结果是261 × 261像素。
计算条形码大小适用于所有条形码(1D和2D)和所有选项(带或不带X模块)。
注意,条形码大小可能包括标准定义的条形码周围的一些填充区域。
例子:为QR对象创建一个TIF文件。
昏暗的数据作为QRBarcodeData =DirectCast(BarcodeData.CreateDefaultBarcodeData (BarcodeSymbology.QR)、QRBarcodeData)
在整个示例中,我们将使用默认选项
在300 DPI下计算条形码的像素大小
昏暗的决议作为整数= 300
barcodeWriter.CalculateBarcodeDataBounds (LeadRect。空,分辨率,分辨率,数据,没有什么)
创建一个这样大小的RasterImage对象
昏暗的boundsPixels作为LeadRect = data.Bounds。ToRectangle(分辨率,分辨率)
使用图像作为新RasterImage (RasterMemoryFlags。传统,boundsPixels。宽度,boundsPixels。高度,1,RasterByteOrder。Rgb, RasterViewPerspective。TopLeft,没有什么, IntPtr。0, 0)
设定分辨率
的形象。XResolution =决议
的形象。YResolution =决议
“把它装满白色
昏暗的cmd作为新Leadtools.ImageProcessing.FillCommand (RasterColor.FromKnownColor (RasterKnownColor.White))
cmd.Run(图片)
将条形码写入图像
barcodeWriter。WriteBarcode(image, data,没有什么)
保存为TIF格式
使用编解码器作为新RasterCodecs ()
编解码器。保存(图像,“C: \ LEADTOOLS21 \资源\ \ MyQR.tif图像”RasterImageFormat.Tif 1)
结束使用
结束使用
QRBarcodeData data = BarcodeData.CreateDefaultBarcodeData(barcodeymbology . qr)作为QRBarcodeData;
//在这个例子中我们将使用默认选项
//按300 DPI计算条码的像素大小
int分辨率= 300;
barcodeWriter.CalculateBarcodeDataBounds (LeadRect。空,分辨率,分辨率,数据,零);
//创建这个大小的RasterImage对象
LeadRect boundsPixels = data.Bounds。ToRectangle(决议,决议);
使用(RasterImage图像=新RasterImage (RasterMemoryFlags。传统,boundsPixels。宽度,boundsPixels。高度,1,RasterByteOrder。Rgb, RasterViewPerspective。TopLeft,零, IntPtr。0, 0))
{
//设置分辨率
的形象。XResolution =决议;
的形象。YResolution =决议;
//填充白色
新Leadtools.ImageProcessing.FillCommand (RasterColor.FromKnownColor (RasterKnownColor.White) .Run(图片);
//将条形码写入图像
barcodeWriter。WriteBarcode(image, data,零);
//保存为TIF格式
使用(RasterCodecs编解码器=新RasterCodecs ())
{
编解码器。保存(图像,@“C: \ LEADTOOLS21 \资源\ \ MyQR.tif图像”RasterImageFormat.Tif 1);
}
}
结果:QR条码的TIF图像
如果需要,您可以将上面示例中的图像调整为精确的像素大小。例如,要有一个300 * 300像素的二维码,在保存图像之前添加以下代码:
昏暗的cmd作为新SizeCommand(300、300、RasterSizeFlags.Bicubic)
cmd.Run(图片)
SizeCommand cmd =新SizeCommand(300、300、RasterSizeFlags.Bicubic);
cmd.Run(图片);