Frage

Ich bin mit dem Google-Open-Source-Java-ZXing creator: http://code.google.com/ p / ZXing /

QR-Codes erstellen. Ich habe alles an seinem Platz und Arbeit (Ich bin Laden der Java-Dateien ColdFusion- und Schreiben das Bild an den Browser.)

Was ich will, ist jetzt die schwarze QR Farbe, um etwas anderes zu ändern. Gibt es eine einfache Möglichkeit, dies zu tun?

brauche ich, um zu bearbeiten eine dekompiliert Version des Encoders Java-Datei? Oder gibt es eine Weise, die ich eine Farbe Argument für die Codierung Routine hinzufügen könnte?

Danke Shaun

War es hilfreich?

Lösung

In MatrixToImageWriter.java (die ich nehme an, Sie verwenden), unter javase/ Änderung der Konstante BLACK. Es ist ein int in ARGB-Format und zur Zeit Wert 0xFF000000 hat. Lassen Sie den Alpha-Wert bei 0xFF. Ändern Sie den Rest Ihrer Farbe in Hex-Format zu beschreiben. Sie können mit WHITE das gleiche tun, wenn Sie wie.

Andere Tipps

Versuchen Sie, diese ::

BitMatrix matrix = new QRCodeWriter().encode(data, BarcodeFormat.QR_CODE, this.width, this.height, getEncodeHints());
/*
Here the config object represents the QR Code colors.
i.e. Brown and White respectively
*/ 
MatrixToImageConfig conf = new MatrixToImageConfig(-10223615,-1);
BufferedImage qrcode = MatrixToImageWriter.toBufferedImage(matrix, conf);

Ich gehe davon aus, dass Sie erzeugenden qr Code wie folgt:

QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(code,null,
                                                Contents.Type.TEXT,
                                                BarcodeFormat.QR_CODE.toString(),            
                                                yourDimension);

wird Ihre Ausgabe der Dimension auf Ihrem Code basieren. Legen Sie Ihre Dimension so gering wie möglich. So Sie genauen Positionen von qr Code Ort finden können Sie die Farbe ändern möchten.

als Ihre Pixel von Bitmap erhalten mit:

int[] allpixels = new int[bitmap.getHeight() * bitmap.getWidth()];
bitmap.getPixels(allpixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());

Und Farbpixel Sie wollen:

for (int i = 6; i < 9; i++) {
     allpixels[i] = Color.Red; // your rgb color
      }

Konvertieren dp px für alle Geräte:

qrCodeDimension = dpToPx((int) getResources().getDimension(R.dimen.qr_dimen));

public static int dpToPx(int dp) {
      return (int) (dp * Resources.getSystem().getDisplayMetrics().density);
   }

Finaly, geben Sie Ihre farbigen Pixel Bitmap:

bitmap.setPixels(allpixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());

return Bitmap.createScaledBitmap(bitmap, qrCodeDimension, qrCodeDimension, false);

Das ist, wie ich das Problem gelöst. Ich hoffe, das wird dir helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top