AI二维码插件的开发

最近对开发框架进行了整理,可以很好的为CS3CS4CS5CS6CC开发插件了。

准备

 插件开发框架【已有】

 二维码库【libqrencode】

libqrencode

 http://fukuchi.org/works/qrencode/

 可以编码字符串或结构化的数据。

使用QRcode_encodeString()来编码一个字符串。给出的字符串将被自动分析和编码。如果你希望编码的数据可以以C风格字符串来表现,你可以简单的这样使用。如果输入的数据包含Kanji(Shift-JIS)字符,你腻歪作为Kanji来编码它们,需要给出QR_MODE_KANJI作为一个标志。否则,所有不是字母或数字的字符将以8位数据来编码。如果你希望所有的字符串以8位模式编码,使用QRcode_encodeString8bit.

你可以手动的构建一个输入数据的结构体。如果已知输入数据的结构体,可以这样使用,首先,用QRinput_new()创建一个QRinput对象。然后,使用QRinput_append()来添加数据到QRinput对象。最后调用QRcode_encodeInput()来编码QRinput数据。你可以重复使用QRinput数据,传入不同的参数,构建不同的符号。

编码好的符号是一个QRcode对象。它包含版本号,符号的宽度和一个表示符号的数组。你可以使用QRcode_free()来释放这个对象。

请注意结果版本号可能大于指定的,这种情况下,输入的数据对于编码为指定的版本来说可能过大。

libqrencode还可以生成Sructured-appended符号集,用来将一个大数据集合分解到多个QR code中。一个QR code reader连接多个QR code符号到一个字符串中。正如QRcode_encodeString(),你可以使用QRcode_encodeStringStructured()来生成structured-appended符号。这个函数返回一个QRcode_List的实例。这个list是一个QRcode的单向链表。你可以以下面的方式获得每一个QR code:

QRcode_List *qrcodes;

QRcode_List *entry;

QRcode *qrcode;

qrcodes = QRcode_encodeStringStructured(...);

entry = qrcodes;

while(entry != NULL)
{

  qrcode = entry->code;

  //do something

  entry = entry->next;
}

QRcode_List_free(entry);

可以构建自己的input结构来取代自动分析函数。首先,调用QRinput_Struct_new()函数来实例化一个QRinput_Struct对象。这个对象可以保存多个QRinput。QRinput_Struct_appendInput()添加一个QRinput到QRinput_Struct对象中。为了生成structured-appended符号,需要嵌入头到每个符号中。可以使用QRinput_Struct_insertStructuredAppendHeaders()来插入合适的头到每个符号中。必须在编码符号钱调用这个方法一次。

libqrencode库的测试

新建MFC单文档程序,将libqrencode中的h和c文件往工程里拷贝,编码,修改编译错误。

void CChildView::On32771()
{
	string src = "http://www.baidu.com";
	if(m_pQRcode)
	{
		QRcode_free(m_pQRcode);
		m_pQRcode = NULL;
	}
	m_pQRcode = QRcode_encodeString(src.c_str(), 0, QR_ECLEVEL_H,
		QR_MODE_8, 1);
	Invalidate();
}

用最低容错率生成的冒似和百度首页的轻应用的生成的不一样,不知道原因,高容错率是一致的,请各位看官核对一下,效果如下:


插件开发

AI二维码插件就是将上面的MFC中的代码移植到AI中,将图形转换为AI文档中对应的Art。

效果如下:

好了,这个插件大体上是完成了,http://pan.baidu.com/s/1jG3K5Zw.




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值