Есть много пакетов для разработки JAR для генерации QR -кодов Java. Например, Zxing разработан Google. Здесь я использую пакет разработки ZXING для его реализации. Во многих проектах нам нужно динамически генерировать QR -коды, чтобы предоставить их пользователям, чтобы больше людей могли хорошо испытывать свои приложения с помощью QR -кодов.
Код размещен ниже, и он был протестирован, и вы можете скопировать код непосредственно для использования:
Наконец достиг результатов:
Java генерирует QR -код
Код заключается в следующем:
Импорт java.awt.color; импортировать java.awt.graphics2d; import java.awt.image; импорт java.awt.geom.affineTransform; импорт java.awt.image.affineTransformop; импорт java.awt.image.bufferedImage; импорт java.io.file; java.io.unsupportedencodingexception; импорт java.util.hashmap; импорт java.util.map; импорт javax.imageio.imageio; Импорт com.google.zxing.barcodeformat; import com.google.zxing.encodehinttype; импорт com.google.zxing.multiformatwriter; импорт com.google.zxing.writerexception; import com.google.zxing.common.bitmatrix; import com.google.zxing.qrcode.decorrectionle.decorrectionle. открытый класс MatrixtoImageWriter {private Static Final int Image_width = 100; Частный статический конечный IMAME_HEITH = 100; Private Static Final int Image_half_width = Image_width / 2; Частный статический конечный int frame_width = 2; Частный статический мультиформенный автор MutiWriter = new MultiformatWriter (); public static void encode (строковое содержимое, ширина int, int height, string srcimagepath, string destimagepath) {try {imageio.write (genbarcode (содержимое, ширина, высота, srcimagepath), "jpg", новый файл (destimagepath)); } catch (ioException e) {e.printstackTrace (); } catch (writerException e) {e.printstacktrace (); }} private Static BufferedImage GenBarcode (строковое содержимое, ширина int, int height, string srcimagepath) throws writerexception, ioException {buffereMage scaleMage = scale (srcimagePath, image_width, image_height, true); int [] [] srcpixels = new int [image_width] [image_height]; for (int i = 0; i <scaleMage.getWidth (); i ++) {for (int j = 0; j <scaleMage.getheight (); j ++) {srcpixels [i] [j] = scaleimage.getrgb (i, j); }} Map <encodehinttype, object> hint = new Hashmap <encodeHintType, Object> (); Hint.put (encodehinttype.character_set, "utf-8"); hint.put (encodehinttype.error_correction, errorcorrectionlevel.h); // генерировать код QR Bitmatrix Matrix = mutiWriter.encode (содержимое, barcodeformat.qr_code, ширина, высота, подсказка); // преобразовать двумерную матрицу в одномерный массив пикселей int walfw = matrix.getWidth () / 2; int Halfh = matrix.getheight () / 2; int [] pixels = new int [ширина * высота]; for (int y = 0; y <matrix.getheight (); y ++) {for (int x = 0; x <matrix.getwidth (); x ++) {// Цвет в верхнем левом углу, отрегулируйте диапазон цветов и цвет в соответствии с вашими потребностями if (x> 0 && x <170 && y> 0 && y <170) {Цвет. int colorint = color.getrgb (); пиксели [y * width + x] = matrix.get (x, y)? Colorint: 16777215; } // Читать изображение else if (x> Halfw - image_half_width && x <Halfw + image_half_width && y> Halfh - image_half_width && y <Halfh + image_half_width) {pixels [y * width + x] = srcpixels [x -полув. Image_half_width]; } else if ((x> Halfw - image_half_width - frame_width && x <Halfw - image_half_width + frame_width && y> Halfh - image_half_width - frame_width && y <Halfh + image_half_width + frame_width) || (x >& y <falh + image_half_width_width) | x <Halfw + image_half_width + frame_width && y> Halfw - image_half_width - frame_width && y <alfh + image_half_width + frame_width) || Image_half_width - Frame_width && y <Halfh - image_half_width + frame_width) || Image_half_width + frame_width && y> Halfh + image_half_width - frame_width && y <alfh + image_half_width + frame_width)) {pixels [y * width + x] = 0xfffffffffff; // образуйте границу вокруг картинки} else {// QR -код цвет int num1 = (int) (50 - (50.0 - 13.0) / matrix.getheight () * (y + 1)); int num2 = (int) (165 - (165.0 - 72.0) / matrix.getheight () * (y + 1)); int num3 = (int) (162 - (162,0 - 107,0) / matrix.getheight () * (y + 1)); Цвет цвета = новый цвет (num1, num2, num3); int colorint = color.getrgb (); // Здесь вы можете изменить цвет QR -кода, и вы можете сформулировать QR -код и цвета фона соответственно; пиксели [y * width + x] = matrix.get (x, y)? Colorint: 16777215; // 0x00000: 0xffffff}}} BufferedImage Image = new BufferedImage (ширина, высота, bufferedimage.type_int_rgb); image.getraster (). SetDateAlements (0, 0, ширина, высота, пиксели); вернуть изображение; } Частная статическая шкала BufferedImage (String srcimagefile, int height, int width, boolean hasefiller) бросает ioexception {двойное соотношение = 0,0; // Scale File file = новый файл (srcimagefile); BufferedImage srcimage = imageio.read (file); Image destimage = srcimage.getscaledInstance (ширина, высота, bufferedimage.scale_smooth); // Рассчитайте шкалу if ((srcimage.getheight ()> height) || (srcimage.getwidth ()> width)) {if (srcimage.getheight ()> srcimage.getwidth ()) {aterio = (новый integer (ehest).). } else {catio = (new Integer (ширина)). DoubleValue () / srcimage.getWidth (); } AffineTransformop op = new AffineTransformop (AffineTransform.getScaleInstance (соотношение, соотношение), null); destimage = op.filter (srcimage, null); } if (hasfiller) {// Заполнение BufferedImage Image = new BufferedImage (ширина, высота, bufferedimage.type_int_rgb); Graphics2d graphic = image.creategraphics (); graphic.setcolor (color.white); graphic.fillrect (0, 0, ширина, высота); if (width == destimage.getwidth (null)) graphic.drawimage (destimage, 0, (высота - destimage.getheight (null)) / 2, destimage.getwidth (null), destimage.getheight (null), color.white, null); else graphic.drawimage (destimage, (width - destimage.getwidth (null)) / 2, 0, destimage.getwidth (null), destimage.getheight (null), color.white, null); graphic.dispose (); destimage = image; } return (buffereMage) destimage; } public static void main (string [] args) бросает UnsupportedEncodingException {//, в свою очередь, содержимое (не поддерживается на китайском языке), ширина, длина, средний путь значков, матрикс -матриц -матрица. "D: //2013-01.jpg"); }}Вы можете обратиться к теме: QR -код Java для обучения
Выше приведено в этой статье, помогающая вам разрабатывать собственный QR -код.