2015-12-02 2 views
-1

Я хочу создать .png для его печати. Файл должен иметь этот макет (100x35 мм) enter image description hereОбъедините изображение и текст, чтобы распечатать их

Я создал QrCode, используя проект Zxing.

public Bitmap createQrCode(String stringForQrCode){ 
    com.google.zxing. MultiFormatWriter writer =new MultiFormatWriter(); 

    String data = stringForQrCode; 
    String finaldata = Uri.encode(data, "utf-8"); 

    BitMatrix bm = null; 
    try { 
     bm = writer.encode(finaldata, BarcodeFormat.QR_CODE,185, 185); 
    } catch (WriterException e) { 
     e.printStackTrace(); 
    } 
    Bitmap ImageBitmap = Bitmap.createBitmap(185, 185, Bitmap.Config.ARGB_8888); 

    for (int i = 0; i < 185; i++) {//width 
     for (int j = 0; j < 185; j++) {//height 
      assert bm != null; 
      ImageBitmap.setPixel(i, j, bm.get(i, j) ? Color.BLACK: Color.WHITE); 
     } 
    } 
    return ImageBitmap; 
} 

Но как я могу объединить эти изображения со своими двумя струнами. Нужно ли создавать новый растровый рисунок? И как выбрать позицию разных предметов.

ответ

0

Я решил ее путем создания растрового изображения из нужного вида. Поэтому я создаю представление, которое включает мой qrcode и обе строки. Но вместо отображения View я установил его на invisible и использовал следующий код для создания и сохранения растрового изображения.

public static Bitmap getBitmapFromView(View view, int width, int height) { 
     Bitmap returnedBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
     Canvas canvas = new Canvas(returnedBitmap); 
     Drawable bgDrawable =view.getBackground(); 
     if (bgDrawable!=null) { 
      bgDrawable.draw(canvas); 
     } else { 
      canvas.drawColor(Color.WHITE); 
     } 
     view.draw(canvas); 
     return returnedBitmap; 
    } 
0

сначала создать растровое изображение как изображения и текста родительского вида

public static Bitmap loadBitmapFromView(View v) { 
    Bitmap b = Bitmap.createBitmap(v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);     
    Canvas c = new Canvas(b); 
    v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom()); 
    v.draw(c); 
    return b; 
} 

Теперь преобразовать растровое изображение в любом формате, как вы хотите