二維碼

二維碼掃描現(xiàn)在已經(jīng)有很多的庫可以使用了,常用的有ZXing和ZBar擎值。如果感興趣的同學(xué)可以自行研究麻顶。

libqrencode介紹:是一個用C語言編寫的用來解析二維條形碼(QR

Code)的程序庫,libqrencode通過手機(jī)的CCD攝像頭來掃描二維條形碼。

而二維碼的生成我是借助于libqrencode庫浅悉。創(chuàng)建工程項目,把libqrencode導(dǎo)入到項目中券犁,創(chuàng)建QRCodeBuilder類,

QRCodeBuilder.h

@interfaceQRCodeBuilder :NSObject

+ (UIImage *)qrImageForString:(NSString *)string imageSize:(CGFloat)size;

+ (UIImage *) twoDimensionCodeImage:(UIImage *)twoDimensionCode withAvatarImage:(UIImage *)avatarImage;

@end

QRCodeBuilder.m

#define qrMargin 5

@implementationQRCodeBuilder

+ (void)drawQRCode:(QRcode *)code context:(CGContextRef)ctx size:(CGFloat)size {

unsignedchar *data = 0;

int width;

data = code->data;

width = code->width;

float zoom = (double)size / (code->width + 2.0 * qrMargin);

CGRect rectDraw =CGRectMake(0, 0, zoom, zoom);

CGContextSetFillColor(ctx,CGColorGetComponents([UIColorblackColor].CGColor));

for(int i = 0; i < width; ++i) {

for(int j = 0; j < width; ++j) {

if(*data & 1) {

rectDraw.origin =CGPointMake((j + qrMargin) * zoom,(i +qrMargin) * zoom);

CGContextAddRect(ctx, rectDraw);

}

++data;

}

}

CGContextFillPath(ctx);

}

+ (UIImage *)qrImageForString:(NSString *)string imageSize:(CGFloat)size {

if (![stringlength]) {

returnnil;

}

QRcode *code =QRcode_encodeString([string UTF8String], 0,QR_ECLEVEL_L, QR_MODE_8, 1);

if (!code) {

returnnil;

}

// create context

CGColorSpaceRef colorSpace =CGColorSpaceCreateDeviceRGB();

CGContextRef ctx =CGBitmapContextCreate(0, size, size, 8, size * 4, colorSpace,kCGImageAlphaPremultipliedLast);

CGAffineTransform translateTransform =CGAffineTransformMakeTranslation(0, -size);

CGAffineTransform scaleTransform =CGAffineTransformMakeScale(1, -1);

CGContextConcatCTM(ctx,CGAffineTransformConcat(translateTransform, scaleTransform));

// draw QR on this context

[QRCodeGeneratordrawQRCode:code context:ctxsize:size];

// get image

CGImageRef qrCGImage =CGBitmapContextCreateImage(ctx);

UIImage * qrImage = [UIImageimageWithCGImage:qrCGImage];

// some releases

CGContextRelease(ctx);

CGImageRelease(qrCGImage);

CGColorSpaceRelease(colorSpace);

QRcode_free(code);

return qrImage;

}

+ (UIImage *) twoDimensionCodeImage:(UIImage *)twoDimensionCode withAvatarImage:(UIImage *)avatarImage{

// two-dimension code 二維碼

CGSize size = twoDimensionCode.size;

CGSize size2 =CGSizeMake(1.0 / 5.5 * size.width, 1.0 / 5.5 * size.height);

UIGraphicsBeginImageContext(size);

[twoDimensionCode drawInRect:CGRectMake(0, 0, size.width, size.height)];

[[self avatarImage:avatarImage] drawInRect:CGRectMake((size.width - size2.width) / 2.0, (size.height - size2.height) / 2.0, size2.width, size2.height)];

UIImage *resultingImage =UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return resultingImage;

}

+ (UIImage *) avatarImage:(UIImage *)avatarImage{

UIImage * avatarBackgroudImage = [UIImageimageNamed:@"psb.png"];

CGSize size = avatarBackgroudImage.size;

UIGraphicsBeginImageContext(size);

[avatarBackgroudImagedrawInRect:CGRectMake(0, 0, size.width, size.height)];

[avatarImagedrawInRect:CGRectMake(10, 10, size.width - 20, size.height - 20)];

UIImage *resultingImage =UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return resultingImage;

}

@end

UIImageView * imageView = [[[UIImageViewalloc] initWithFrame:CGRectMake(10, 50, 300, 300)]autorelease];

// imageView.image =

UIImage * towCode = [QRCodeGeneratorqrImageForString:@"http://blog.csdn.net/tuyaloveios"imageSize:imageView.bounds.size.width];

UIImage * abelImage = [UIImageimageNamed:@"abel.png"];

imageView.image = [QRCodeGeneratortwoDimensionCodeImage:towCodewithAvatarImage:abelImage];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末术健,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子粘衬,更是在濱河造成了極大的恐慌荞估,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稚新,死亡現(xiàn)場離奇詭異勘伺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)褂删,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門飞醉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人屯阀,你說我怎么就攤上這事缅帘。” “怎么了难衰?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵钦无,是天一觀的道長。 經(jīng)常有香客問我盖袭,道長失暂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任鳄虱,我火速辦了婚禮弟塞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘醇蝴。我一直安慰自己宣肚,他們只是感情好想罕,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布悠栓。 她就那樣靜靜地躺著,像睡著了一般按价。 火紅的嫁衣襯著肌膚如雪惭适。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天楼镐,我揣著相機(jī)與錄音癞志,去河邊找鬼。 笑死框产,一個胖子當(dāng)著我的面吹牛凄杯,可吹牛的內(nèi)容都是我干的错洁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼戒突,長吁一口氣:“原來是場噩夢啊……” “哼屯碴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起膊存,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤导而,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后隔崎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體今艺,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年爵卒,在試婚紗的時候發(fā)現(xiàn)自己被綠了虚缎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡钓株,死狀恐怖遥巴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情享幽,我是刑警寧澤铲掐,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站值桩,受9級特大地震影響摆霉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奔坟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一携栋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咳秉,春花似錦婉支、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至炕舵,卻和暖如春何之,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咽筋。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工溶推, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓蒜危,卻偏偏與公主長得像虱痕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子辐赞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 有關(guān)二維碼的介紹皆疹,我這里不做過多說明, 可以直接去基維百科查看占拍,附上鏈接QR code. IOS7之前略就,開發(fā)者進(jìn)行...
    牛1688閱讀 1,548評論 0 0
  • CIDetector 這個api是蘋果在ios8之后提供的。所以用蘋果自帶的AVFundation掃描晃酒,如果從相冊...
    然亦傘閱讀 551評論 1 0
  • 本文介紹的是系統(tǒng)自帶的二維碼掃描贝次!方便簡單實用崔兴。-----話不多說,直接上干貨蛔翅! 三步就搞定G们选!I轿觥Q吡恰!K窆臁秆剪! ...
    zhangyajie閱讀 1,191評論 8 2
  • 文/胡子先生 是否你身邊也有這樣一個朋友钾挟,大家都叫他“好好先生”洁灵,說的直白一點(diǎn)就是老好人。 曾有有一個朋友掺出,就是典...
    一只流浪貓的日記閱讀 940評論 0 3
  • 沈威打卡第25天徽千, 180-200 本文講了: 海倫在雜耍劇院多年演出的 經(jīng)歷,在雜耍劇院這個大集體里蛛砰,大家熱情豪...
    四一沈威閱讀 139評論 0 0