يعلمك خطوة بخطوة باستخدام Java Design لإنشاء رموز QR
في عصر إنترنت الأشياء ، تعتبر رموز QR أمرًا مهمًا للغاية. الآن ، بغض النظر عن ما أنت عليه ، يجب عليك الحصول على شعار رمز الاستجابة السريعة. خوفًا من أن تكون قديمًا ، لا يمكنك استخدام رمز الاستجابة السريعة لتحديده. ربما في يوم من الأيام ، سيتم تحديد شهادة الميلاد أو دفتر تسجيل الأسرة مع رمز الاستجابة السريعة. اليوم كنت في نزوة ورأيت أن الآخرين أضافوا رموز QR إلى مدوناتهم ، وأردت أيضًا إجراء اختبار.
يستخدم بشكل أساسي لتحقيق نقطتين:
1. إنشاء رمز الاستجابة السريعة مع أي نص.
2. أضف صورة في منتصف رمز الاستجابة السريعة.
1. العمل التحضير.
قم بإعداد حزمة QR QR Code 3.0 الأساسية وصورة JPG.
قم بتنزيل حزمة رمز QR QR.
أولاً ، لا بد لي من تنزيل حزمة zxing.jar. أنا أستخدم الحزمة الأساسية من 3.0 هنا
عنوان التنزيل: الآن تم نقله إلى Github: https://github.com/zxing/zxing/wiki/getting-started-developing ،
بالطبع ، يمكنك أيضًا تنزيل حزمة JAR من مستودع Maven: http://central.maven.org/maven2/com/google/zxing/core/
2. البرمجة
1. ابدأ Eclipse ، قم بإنشاء مشروع Java جديد ، وابحث عن اسم المشروع (في هذا المثال ، اسم QRCodesoft). انقر فوق التالي:
2. استيراد حزمة zxing.jar. أنا أستخدم الحزمة الأساسية لـ 3.0 هنا: انقر فوق "إضافة جرة خارجية (X) ...".
3. قم بإنشاء فئتين جديدتين ، وهما:
bufferedimageluminancesource.java
qrcodeutil.java
الرموز الرئيسية هي: bufferedimageluminancesource.java و qrcodeutil.java ، حيث توجد الطريقة الرئيسية التي تم اختبارها في qrcodeutil.java.
رمز البرنامج bufferedimageluminancesource.java:
حزمة com.yihaomen.barcode ؛ استيراد java.awt.graphics2d ؛ استيراد java.awt.geom.affinetransform ؛ استيراد java.awt.image.bufferedimage int top ؛ public bufferedimageluminancesource (صورة bufferedImage) {هذا (الصورة ، 0 ، 0 ، image.getWidth () ، image.getheight ()) ؛} bufferedimagelumaGeLuminancesource public ، int int ، int int) image.getheight () ؛ if (left + width> sourceWidth || top + height> sourcehight) {رمي جديد alficalArgumentException ("لا يتناسب مستطيل المحاصيل داخل بيانات الصورة. 0xFF000000) == 0) {image.setrgb (x ، y ، 0xffffff) ؛ // = white}}} this.image = new BufferEdImage (sourceWidth ، sourceHight ، bufferedImage.type_byte_gray) ؛ this.image.getGraphics (). drawImage (Image ، 0 ، 0 ، null) ؛ > = getheight ()) {رمي new alficalArgumentException ("الصف المطلوب خارج الصورة:" + y) ؛} int width = getWidth () ؛ if (row == null || row.length <width) {row = new byte [width] ؛} image.getRaster (). getMatrix () {int width = getWidth () ؛ int height = getheight () ؛ int area = width * height ؛ byte [] matrix = new byte [area] ؛ image.getRaster (). اليسار ، أعلى ، عرض int ، ارتفاع int) {إرجاع جديد bufferedimageluminancesource (صورة ، this.left + اليسار ، this.top + top ، العرض ، الارتفاع) ؛} iSrotateSupported () {public =) Image.getheight () ؛ Affinetrans Transform = جديد AffinetRansform (0.0 ، -1.0 ، 1.0 ، 0.0 ، SourceWidth) ؛ bufferedImage rotatedImage = جديد bufferedImage (sourcehight ، sourceWidth ، bufferedimage.type_byte_gray) ؛ graphics2d g = rotatedimage.creategraph () null) ؛ g.dispose () ؛ int width = getWidth () ؛ إرجاع جديد bufferedimageluminancesource (RotatedImage ، أعلى ، المصدر - (الأيسر + العرض) ، getheight () ، العرض) ؛}}QRCODEUTIL.JAVA رمز البرنامج:
package com.yihaomen.barcode ؛ استيراد java.awt.basicsstroke ؛ استيراد java.awt.graphics ؛ استيراد java.awt.graphics2d ؛ import java.awt.image java.io.file ؛ import java.io.outputstream ؛ import java.util.hashtable ؛ import java.util.random ؛ import javax.imageio com.google.zxing.encodehinttype ؛ import com.google.zxing.multiformatreader ؛ import com.google.zxing.multiformAtwriter ؛ import com.google.zxing.result ؛ import com.google.zxing.common.bitmatrix ؛ import com.google.zxing.common.commbinizer com.google.zxing.qrcode.decoder.errorcorrectlevel ؛/*** QR Code Tool Class*//public class qrcodeutil {private static final string charset = "utf-8" 60 ؛ // ارتفاع شعار الارتفاع الثابت النهائي int int = 60 ؛ static static bufferedimage createImage (محتوى السلسلة ، السلسلة imgpath ، needcompress المنطقية) يلقي الاستثناء {hashtable <encodehinttype ، object> تلميحات = new hashtable <EncodeHinttype ، object> () errorcorrectionlevel.h) ؛ hints.put (encodehinttype.character_set ، charset) ؛ hints.put (encodehinttype.margin ، 1) ؛ bitmatrix bitmatrix = new multiformatwriter (). encode (content ، barcodformat.qr_code ، qrcode_size ، bitmatrix.getWidth () ؛ int height = bitmatrix.getheight () ؛ bufferedImage Image = جديد bufferedImage (العرض ، الارتفاع ، bufferedImage.type_int_rgb) ؛ لـ (int x = 0 ؛ x <العرض ؛ x ++) {for (int y = 0 ؛ y <height ؛ y ++) {image.setrgb (x ، y ، bitmatrix.get (x ، y)؟ 0xff000000: 0xfffffff) ؛}}} if (imgpath == null || ". Needcompress) ؛ إرجاع صورة ؛}/** * إدراج شعار * * param المصدر * صورة رمز QR * param imgpath * عنوان صورة الشعار * param needcompress * {system.err.println (""+imgpath+"هذا الملف غير موجود!") ؛ إرجاع ؛} صورة src = imageio.read (ملف جديد (imgpath)) ؛ (الارتفاع> الارتفاع) {height = height ؛} صورة الصورة = src.getScaledInstance (العرض ، الارتفاع ، image.scale_smooth) ؛ tag bufferedImage = new BufferedImage (العرض ، الارتفاع ، bufferedimage.type_int_rgb) ؛ Graphics g = tag.getGraphics () ؛ G.DrawAge (Image ، 0 ، // ارسم الرسم البياني المخفض G.Dispose () ؛ src = image ؛} // إدراج loggraphics2d graph = source.creategraphics () ؛ int x = (qrcode_size - width)/ 2 ؛ int y = (qrcode_size - heigh RoundRectNangle2D.float (x ، y ، width ، width ، 6 ، 6) ؛ graph.setStroke (New BasicStroke (3f)) ؛ graph.draw (form) ؛ graph.dispose () ؛ لضغط Logo * athrows استثناء */شحن الفراغ الثابت العام (محتوى السلسلة ، السلسلة imgpath ، السلسلة destpath ، boolean needcompress) يلقي الاستثناء {bufferedImage image = qrcodeutil.createImage (المحتوى ، imgpath ، needcompress) ؛ mkdirs (destpath) ؛ Random (). NextInt (9999999999)+". (إذا لم يكن الدليل الأصل موجودًا ، فسيتم طرح استثناء) * Author Lanyuan * البريد الإلكتروني: [email protected] * date 2013-12-11 10:16:36 AM * param destpath store reactory */public static void mkdirs (String destpath) {file file = destpath) ؛ // عندما لا يكون المجلد موجودًا ، ستقوم MKDIRs تلقائيًا بإنشاء أدلة متعددة الطبقات ، والتي تختلف عن MKDIR. (سوف يرمي mkdir استثناءً إذا لم يكن الدليل الأصل موجودًا) إذا (! file.exists () &&! file.isdirectory ()) {file.mkdirs () ؛ المحتوى ، السلسلة imgpath ، سلسلة destpath) يلقي الاستثناء {qrcodeutil.encode (المحتوى ، imgpath ، destpath ، false) ؛}/** {qrcodeutil.encode (المحتوى ، null ، destpath ، needcompress) ؛}/*** إنشاء رمز QR** param content* content* param destpath* storage address* athrows استثناء*/public static void encode (string content ، string destpath) استثناء {qrcodeutil.encode (شعار مضمن) * * param content * content * param imgpath * عنوان الشعار * param الإخراج * دفق الإخراج * param needcompress * ما إذا كان لضغط شعار * athrows استثناء */public static void encode (string content ، string imgpath ، outputstream output NeedCompress) ؛ imageio.write (صورة ، تنسيق _name ، الإخراج) ؛}/** * إنشاء رمز QR * * param content * content * param output رمز صورة * regurn * @throws استثناء */decode السلسلة الثابتة العامة (ملف الملف) يلقي استثناء {bufferedImage image ؛ image = imageio.read (file) ؛ if (image == null) {return null ؛ Hybridbinarizer (Source)) ؛ النتيجة النتيجة ؛ hashtable <decodehinttype ، الكائن> تلميحات = new hashtable <decodehinttype ، object> () ؛ hints.put (decodehinttype.character_set) ؛ النتائج ؛}/** * تحليل رمز QR * * param path * عنوان صورة رمز QR * regurn * throws استثناء */decode السلسلة الثابتة العامة (مسار السلسلة) يلقي استثناء {return qrcodeutil.decode (ملف جديد (مسار)) ؛} "http://www.yihaomen.com" ؛ qrcodeutil.encode (النص ، "C: /Me.jpg" ، "C:/barcode" ، true) ؛}}توليد رمز الاستجابة السريعة بدون شعار
رمز البرنامج كما يلي:
Public Static Void Main (String [] args) يلقي الاستثناء {string text = "http://www.dans88.com.cn" ؛ qrcodeutil.encode (نص ، "" ، "D:/myworkdoc" ، صحيح) ؛}قم بتشغيل طريقة الاختبار هذه ولا يحتوي رمز الاستجابة السريعة التي تم إنشاؤه على شعار ، فالأسلوب كما يلي:
إذا كنت مهتمًا ، فيمكنك فحصه بهاتفك
قم بإنشاء رمز الاستجابة السريعة بشعار
شعار يمكنك استخدام الصورة الرمزية الخاصة بك أو صورة تريدها ، واستخدام الرمز التالي ، رمز البرنامج كما يلي:
Public Static Void Main (String [] args) يلقي الاستثناء {string text = "http://www.dans88.com.cn" ؛ qrcodeutil.encode (نص ، "d: /myworkdoc/my180.jpg" ، "d:/myworkdoc" ، true) ؛ }الفرق الوحيد هو أن عنوان الشعار محدد على الأساس السابق ، ويتم استخدام ملفات صور القرص C هنا.
مسح بهاتفك المحمول ، ويمكن أن يظهر النص الذي تريد ظهوره. انقر لإدخال موقع الويب الخاص بك.
ما سبق هو استخدام تصميم Java لإنشاء رموز QR. يمكن للأصدقاء المهتمين الرجوع إليها. شكرا لك على دعمك لهذا الموقع!