Question

J'utilise Java open source google ZXing créateur: http://code.google.com/ p / ZXing /

pour créer des codes QR. J'ai tout mis en place et de travail (je charge les fichiers Java en utilisant coldfusion et écrire l'image au navigateur.)

Ce que je veux maintenant changer la couleur QR noir à autre chose. Est-il un moyen facile de le faire?

Aurais-je besoin de modifier une version décompilé du codeur fichier java? Ou est-il un moyen que je pourrais ajouter un argument de couleur à la routine d'encodage?

Merci Shaun

Était-ce utile?

La solution

Dans MatrixToImageWriter.java (que je suppose que vous utilisez), en raison des changements javase/ la BLACK constante. Il est un int au format ARGB et a actuellement la valeur 0xFF000000. Laissez la valeur alpha à 0xFF. Changer le reste pour décrire votre couleur au format hexadécimal. Vous pouvez faire la même chose avec WHITE si vous aimez.

Autres conseils

Essayer cette ::

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);

Je suppose que vous êtes un code générant qr comme ci-dessous:

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

La dimension de votre sortie sera fonction de votre code. Définissez votre dimension possible aussi bas. Ainsi, vous pouvez trouver les positions exactes de la place de code qr vous voulez changer de couleur.

Que obtenir vos pixels de bitmap avec:

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

et les pixels de couleur que vous voulez:

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

Convertir dp à px pour tous les périphériques:

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

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

Finaly définir vos pixels de couleur à bitmap:

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

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

C'est comment je résolu le problème. J'espère que cela va vous aider.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top