QRコードのJava生成用の多くの開発JARパッケージがあります。たとえば、ZxingはGoogleによって開発されています。ここでは、Zxingの開発パッケージを使用して実装します。多くのプロジェクトでは、QRコードをユーザーに提供するために動的に生成する必要があります。そうすれば、より多くの人々がQRコードを通じてアプリケーションを適切に体験できるようにします。
コードは以下に投稿されており、テストされており、コードを直接コピーして使用できます。
最後に結果を達成しました:
JavaはQRコードを生成します
コードは次のとおりです。
java.awt.color; Import java.awt.graphics2d;インポートjava.awt.image; Import java.awt.geom.affinetransform; Import java.awt.image.affinetransformop; Import java.awt.image.bufferedimage; Import java.file.file.file.file.file.file.file. java.io.unsupportedencodingexception; import java.util.hashmap; import java.util.map; import javax.imageio.imageio; com.google.zxing.barcodeformat; Import com.google.zxing.encodehinttype; Import com.google.zxing.multiformatwriter; Import com.google.zxing.writerexception; import com.google.zxing.common.bitmatrix; Import; com.google.zxing.qrcode.decoder.errorcorrectionlevel; public class matrixtoimagewriter {private static final int image_width = 100; private static final int image_height = 100; private static final int image_half_width = image_width / 2; private static final int frame_width = 2; private static multiformatwriter mutiwriter = new multiformatwriter(); public static void encode(string content、int width、int height、string srcimagepath、string destimagepath){try {imageio.write(genbarcode(content、width、height、srcimagepath)、 "jpg"、新しいファイル(DestimagePath)); } catch(ioexception e){e.printstacktrace(); } catch(writerexception e){e.printstacktrace(); }} private static bufferedimage genbarcode(string content、int width、int height、string srcimagepath)writerexception、ioexception {bufferedimage scaleimage = scale(srcimagepath、image_width、image_height、true); int [] [] srcpixels = new int [image_width] [image_height]; for(int i = 0; i <scaleimage.getWidth(); i ++){for(int j = 0; j <sacleimage.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(content、barcodeformat.qr_code、width、height、hint); // 2次元マトリックスを1次元ピクセル配列に変換しますint halfw = matrix.getWidth() / 2; int halfh = matrix.getheigh() / 2; int [] pixels = new int [width * height]; for(int y = 0; y <matrix.getheight(); y ++){for(int x = 0; x <matrix.getWidth(); x ++){//左上隅の色は、ニーズに応じて色の範囲と色を調整します。 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_width){pixels [y * width + x] = srcpixels [x -half + image_half_wid] 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 <halfw + image_half_width + frame_width && y> halfw -image_half_width -frame_width && y <halfh + image_half_width + frame_width)|| Image_half_width -frame_width && y <halfh -half_width + frame_width)|| image_half_width + frame_width && y> halfh + image_half_width -frame_width && y <halfh + image_half_width + frame_width)){pixels [y * width + x] = 0xffffffff; //写真の周りに境界線を形成} else {// qr code color int num1 =(int)(50-(50.0-13.0) / matrix.getheigh() *(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));色の色= new Color(num1、num2、num3); int colorint = color.getrgb(); //ここでは、QRコードの色を変更でき、それぞれQRコードと背景色を策定できます。ピクセル[y * width + x] = matrix.get(x、y)? Colorint:16777215; // 0x00000:0xffffffff}}} bufferedimage画像= new bufferedimage(width、height、bufferedimage.type_int_rgb); image.getRaster()。setDataelements(0、0、幅、高さ、ピクセル);画像を返します。 } private static bufferedimageスケール(String srcimageFile、int height、int width、boolean hasfiller)throws ioexception {double ratio = 0.0; // scale file = new 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(){ratio =(height))。 } else {ratio =(new Integer(width))。doublevalue() / srcimage.getWidth(); } affinetransformop op = new affinetransformop(affinetransform.getScaleinStance(比率、比率)、null); destimage = op.filter(srcimage、null); } if(hasfiller){// bufferedimage画像= new bufferedimage(width、height、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、(height -destimage.getheight(null)) / 2、destimage.getWidth(null)、destimage.getheigh(null)、color.white、null); else graghic.drawimage(destimage、(width -destimage.getwidth(null)) / 2、0、destimage.getWidth(null)、destimage.getheigh(null)、color.white、null); graphic.dispose(); Destimage = image; } return(bufferedimage)destimage; } public static void main(string [] args)unsupportedencodingexception {//順番に、コンテンツ(中国語ではサポートされていません)、幅、長さ、ミドルアイコンパス、ストレージパスMatrixtoimagewriter.encode( "http://www.baidu.com/"、512、512、 " "d://2013-01.jpg"); }}トピックを参照できます:Java QR学習のためのコード
上記はこの記事に関するもので、独自のQRコードの設計に役立ちます。