| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 277 人关注过本帖
标题:求助:VFP 二维码程序foxbarcodeqr里,哪里是设置生成条码的种类(点阵)?
只看楼主 加入收藏
chqzgq
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-4-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:12 
求助:VFP 二维码程序foxbarcodeqr里,哪里是设置生成条码的种类(点阵)?
上次在楼主帮助下,完成了用VFP生成QR二维码的问题,但现在朋友反映生成的二维码是QR(33x33)点阵的,他需要QR(25x25)的,我查遍了foxbarcodeqr程序的内容,没有找到相关设置,求大侠们指点,谢谢!
搜索更多相关主题的帖子: VFP 生成 条码 二维 点阵 
2025-06-09 13:19
chqzgq
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-4-7
收藏
得分:0 
根据网上查询得知25x25是版本2,33x33是版本3,就是没有找到在哪里将版本设置为2?程序里面只有对二维码图片(生成二维码的内容,生成图片的名称,生成图片的大小及生成图片的格式)可以设置,但版本的设置却没有提及,不像条形码那样对编码的类型可以设定,所以只有求教资深大侠了!


[此贴子已经被作者于2025-6-9 13:47编辑过]

2025-06-09 13:32
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:930
专家分:1470
注 册:2021-10-13
收藏
得分:7 
这个点阵不是根据内容得来的吗?内容越多点阵越多。。。
2025-06-09 20:23
iswith
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:605
专家分:725
注 册:2013-5-14
收藏
得分:7 
你定不了!换成思路把生成的图片缩小就可以,用png格式。
2025-06-09 21:30
chqzgq
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-4-7
收藏
得分:0 
点阵确定了二维码反映的内容,种类号越小,反映的内容越少,二维码的图像反映出来就稀(白多黑少)。不是放大或缩小图像尺寸的问题。而我现在使用的这个PRG程序就没有关于种类设置的内容。
经一天在网上查询,发现QRmaker可以设置二维码的种类(规格),但我在SYStem32里注册成功后,仍然用VFP9不能正常使用,提示没有找到相应的类。请教已经正常使用QRmaker的大侠提供详细使用方法,万分感谢!

[此贴子已经被作者于2025-6-9 22:19编辑过]

2025-06-09 22:13
iswith
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:605
专家分:725
注 册:2013-5-14
收藏
得分:0 
版本号    模块尺寸    最大字符容量(数字)
1    21x21    41
2    25x25    77
3    29x29    127

// 显式指定QR码版本2(25x25模块)
var options = new QrCodeEncodingOptions {
    QrVersion = 2, // 版本号范围1-40
    Width = 250,    // 实际渲染像素宽度
    Height = 250,   // 实际渲染像素高度
    Margin = 2,     // 静区边距
    ErrorCorrection = ErrorCorrectionLevel.H  // 高容错级别
};

var writer = new BarcodeWriter<Bitmap>(options) {
    Format = BarcodeFormat.QR_CODE
};

// 生成版本2二维码
Bitmap qrCode = writer.Write("https://cloud.);
qrCode.Save("v2_qrcode.png", ImageFormat.Png);
2025-06-09 22:56
chqzgq
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-4-7
收藏
得分:0 
回复 6楼 iswith
谢谢大侠指点,不知道这段指定“显式指定QR码版本2”的代码是插入在“foxbarcodeqr.prg”里面,还是插入在实例代码中?我将 QrVersion = 2 插入实例中,没有出错提示,无论怎样修改版本号但输出的图像没有变化。

[此贴子已经被作者于2025-6-10 14:26编辑过]

2025-06-10 14:19
chqzgq
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-4-7
收藏
得分:0 
我找到了foxbarcodeqr1.17版及最新的foxbarcodeqr2.1版,查询内容后也没有解决这个问题的方法,如果要达到设置种类的目的,只有在QRMaker或其他控件上找方法了,谢谢以上各位大侠的回答。谢谢!
6 天前 18:09
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:930
专家分:1470
注 册:2021-10-13
收藏
得分:0 
确定点阵大小的参数是tnsize,附上代码,你可能没有注意看它的源代码,它举例说了的。。。

参考下面源代码:
程序代码:
*--------------------------------------------------------------------------------------
* FoxBarcodeQR.prg
*--------------------------------------------------------------------------------------
* FoxBarcodeQR is a application free software and offers a Barcode tool for the Visual
* FoxPro Community. This is a supplement of FoxBarcode class only for QR Code barcodes.
* This software is provided "as is" without express or implied warranty.
* Use it at your own risk
*--------------------------------------------------------------------------------------
* Version: 1.11
* Date   : 2013.08.24
* Author : VFPEncoding
* Email  : vfpencoding@*
* Note   : VFPEncoding are
*          Guillermo Carrero (QEPD) (Barcelona, Spain) and
*          Luis Maria Guayan (Tucuman, Argentina)
*--------------------------------------------------------------------------------------
* Note   : This application use the free library BarCodeLibrary.DLL
*          of Dario Alvarez Aranda (Mexico)
*--------------------------------------------------------------------------------------

*--------------------------------------------------------------------------------------
* FoxBarcodeQR Class Definition
*--------------------------------------------------------------------------------------
DEFINE CLASS FoxBarcodeQR AS CUSTOM

  m.cTempPath = "" && Windows Temp folder + SYS(2015)
  m.cAppPath = "" && App folder
  m.lDeleteTempFiles = .T. && Delete the temporary folder and image files

  *---------------------------------------------------------
  * PROCEDURE QRBarcodeImage()
  *---------------------------------------------------------
  * Generated QR Barcode image with BarCodeLibrary.DLL
  *  Parameters:
  *   tcText: Text to encode
  *   tcFile: Imagen File Name (optional)
  *   tnSize: Imagen Size [2..12] (default = 4)
  *     2 = 66 x 66 (in pixels)
  *     3 = 99 x 99
  *     4 = 132 x 132
  *     5 = 165 x 165
  *     6 = 198 x 198
  *     7 = 231 x 231
  *     8 = 264 x 264
  *     9 = 297 x 297
  *    10 = 330 x 330
  *    11 = 363 x 363
  *    12 = 396 x 396
  *   tnType: Imagen Type [BMP, JPG or PNG] (default = 0)
  *     0 = BMP
  *     1 = JPG
  *     2 = PNG
  *---------------------------------------------------------
  PROCEDURE QRBarcodeImage(tcText, tcFile, tnSize, tnType)
    LOCAL lcType, lcFolder

    IF VARTYPE(m.tnSize) <> "N"
      m.tnSize = 4 && default size:  132 x 132 pixels
    ENDIF

    IF VARTYPE(m.tnType) <> "N"
      m.tnType = 0  && defaul type: BMP
    ENDIF

    m.tnSize = MIN(MAX(m.tnSize, 2), 12)
    m.tnType = MIN(MAX(m.tnType, 0), 2)
    m.lcType = IIF(m.tnType = 1, "JPG", IIF(m.tnType = 2, "PNG", "BMP"))

    IF EMPTY(m.tcFile)
      m.lcFolder = THIS.cTempPath
      IF NOT DIRECTORY(m.lcFolder)
        MD (m.lcFolder)
      ENDIF
      m.tcFile = FORCEEXT(m.lcFolder + SYS(2015), m.lcType)
    ELSE
      m.lcFolder = JUSTPATH(m.tcFile)
      IF NOT DIRECTORY(m.lcFolder)
        MD (m.lcFolder)
      ENDIF
      m.tcFile = FORCEEXT(m.tcFile, m.lcType)
    ENDIF

    *- Declare the functions of BarCodeLibrary.dll
    DECLARE INTEGER GenerateFile IN BarCodeLibrary.DLL ;
      STRING cData, STRING cFileName

    DECLARE INTEGER SetConfiguration IN BarCodeLibrary.DLL ;
      INTEGER nSize, INTEGER nImageType

    SetConfiguration(m.tnSize, m.tnType)
    GenerateFile(m.tcText, m.tcFile)

    CLEAR DLLS SetConfiguration, GenerateFile

    RETURN m.tcFile
  ENDPROC

  *------------------------------------------------------
  * PROCEDURE Init()
  *------------------------------------------------------
  PROCEDURE INIT()
    THIS.cTempPath = ADDBS(THIS.TempPath() + SYS(2015))
    THIS.cAppPath = FULLPATH("")
  ENDPROC

  *------------------------------------------------------
  * PROCEDURE Destroy()
  *------------------------------------------------------
  PROCEDURE DESTROY()
    IF THIS.lDeleteTempFiles
      THIS.EmptyFolder(THIS.cTempPath)
      IF DIRECTORY(THIS.cTempPath)
        RD (THIS.cTempPath)
      ENDIF
    ENDIF
  ENDPROC

  *------------------------------------------------------
  * PROCEDURE EmptyFolder(tcFolder)
  *------------------------------------------------------
  * Empty temporary image folder
  *------------------------------------------------------
  PROCEDURE EmptyFolder(tcFolder)
    LOCAL loFso AS OBJECT
    LOCAL lcMask
    DO CASE
      CASE EMPTY(m.tcFolder)
        RETURN .F.
      CASE NOT DIRECTORY(m.tcFolder)
        RETURN .F.
    ENDCASE
    m.lcMask = ADDBS(m.tcFolder) + "*.*"
    #IF .T. && Use FSO
      m.loFso  = CREATEOBJECT("Scripting.FileSystemObject")
      m.loFso.DeleteFile(m.lcMask, .T.)
    #ELSE && Not Use FSO
      ERASE (m.lcMask)
    #ENDIF
    RETURN  .T.
  ENDPROC

  *---------------------------------------------------------
  * PROCEDURE TempPath()
  *---------------------------------------------------------
  * Returns the path for temporary files
  *---------------------------------------------------------
  PROCEDURE TempPath()
    LOCAL lcPath, lnRet
    LOCAL lnSize
    m.lcPath = SPACE(255)
    m.lnSize = 255
    DECLARE INTEGER GetTempPath IN WIN32API ;
      INTEGER nBufSize, ;
      STRING @cPathName
    m.lnRet = GetTempPath(m.lnSize, @m.lcPath)
    IF m.lnRet <= 0
      m.lcPath = ADDBS(FULLPATH("TEMP"))
    ELSE
      m.lcPath = ADDBS(SUBSTR(m.lcPath, 1, m.lnRet))
    ENDIF
    RETURN m.lcPath
  ENDPROC

  *---------------------------------------------------------
  * PROCEDURE Error
  *---------------------------------------------------------
  * Error procedure
  *---------------------------------------------------------
  PROCEDURE ERROR
    LPARAMETERS nError, cMethod, nLine
    LOCAL lcErrMsg
    LOCAL la[1]
    AERROR(la)
    m.lcErrMsg =  "Error number: " + TRANSFORM(m.la(1, 1)) + CHR(13) + ;
      "Error message: " + m.la(1, 2) + CHR(13) + CHR(13) + ;
      "Method: " + m.cMethod + CHR(13) + ;
      "Line: " + TRANSFORM(m.nLine)
    MESSAGEBOX(m.lcErrMsg, 0 + 16, "FoxBarcodeQR error")
  ENDPROC

  *---------------------------------------------------------

ENDDEFINE && FoxBarcodeQR

*--------------------------------------------------------------------------------------
* END DEFINE FoxBarcodeQR Class
*--------------------------------------------------------------------------------------

4 天前 13:25
chqzgq
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-4-7
收藏
得分:0 
回复 9楼 sam_jiang
谢谢9楼老师的指点,关于tnsize我看过了的,它指的是打印图像的点阵(从2-12级可选,2是66*66,3是99*99...),和生成图像的种类(或格式,从1-40级可选,1是21*21,2是25*25...)不同。所以这个tnsize不是种类选择的参数。谢谢了!
FoxbarcodeQR这个控件或程序是比较好懂并且好用的,现在唯一的缺陷就是种类不可选(默认是4级,33*33的),到2.1版本好像都没有提到解决的办法。盼望能补足这个缺陷。

[此贴子已经被作者于2025-6-14 20:24编辑过]

4 天前 20:19
快速回复:求助:VFP 二维码程序foxbarcodeqr里,哪里是设置生成条码的种类(点阵 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021463 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved