2017-05-03 5 views
1

文字列をQRビットマップにエンコードしました。絵は次のように次のようになります。Android QRビットマップはマージンを削除するのに役立ちます

image of QR bitmap

は、私はQR前後に空白がないように変更する必要がありますか?私はMultiFormatWriter()とsetPixels()についてのドキュメントを読み込もうとしましたが、どこが間違っているのか分かりませんでした。私は、問題はあなたがビットマップであなたのピクセルを設定する方法だと思い

Bitmap encodeAsBitmap(String str) throws WriterException { 
    BitMatrix result; 
    try { 
     result = new MultiFormatWriter().encode(str, 
       BarcodeFormat.QR_CODE, 500, 500, null); 
    } catch (IllegalArgumentException iae) { 
     return null; 
    } 

    int w = result.getWidth(); 
    int h = result.getHeight(); 
    int[] pixels = new int [w * h]; 
    for (int i = 0; i < h; i++) { 
     int offset = i * w; 
     for (int j = 0; j < w; j++) { 
      pixels[offset + j] = result.get(i, j) ? BLACK : WHITE; 
     } 
    } 

    Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); 
    bitmap.setPixels(pixels, 0, 500, 0, 0, w, h); 
    return bitmap; 

} 

答えて

0

: は、ここでは、コードです。 documentationによれば

ストライドINT:画素の色数[]列の間にスキップします。通常、この値はビットマップの幅と同じですが、より大きい(または負の値)ことがあります。

だから私は次のことをお勧め:

bitmap.setPixels(pixels, 0, w, 0, 0, w, h); 

編集: ちょうどあなたが入力の大きさは、あなたが(あなたの文字列は正方形を表し仮定して)それを計算しようとすることができる500であることを前提と気づきました。四角形の場合、MultiFormatWriterがそれを読むことができるように、何らかの形でサイズを計算できる必要があります。

だからあなたのコードが使用できます。

Bitmap encodeAsBitmap(String str, int size) throws WriterException { 

    BitMatrix result; 
    try { 
     result = new MultiFormatWriter().encode(str, 
       BarcodeFormat.QR_CODE, size, size, null); 
    } catch (IllegalArgumentException iae) { 
     return null; 
    } 

    int[] pixels = new int [size * size]; 
    for (int i = 0; i < size; i++) { 
     int offset = i * size; 
     for (int j = 0; j < size; j++) { 
      pixels[offset + j] = result.get(i, j) ? BLACK : WHITE; 
     } 
    } 

    Bitmap bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); 
    bitmap.setPixels(pixels, 0, size, 0, 0, size, size); 
    return bitmap; 

} 
+0

それはまだ余裕で画像を出力:( – Toeffen

+0

私は、コードを更新 –

+0

更新は)(str.lengthのImageViewの幅と高さを与え、それが可能 – Toeffen

関連する問題