2015-05-09 3 views
0

Я создаю генератор QR-кода, используя zxing library для Android. Приложение работает отлично. Тем не менее, мне нужно добавить логотип в центр сгенерированного QR-кода . Я прочитал a tutorial from this web, но это не близко к тому, что я ищу.Добавить логотип Перед QR-кодом

Вот пример моего кода:

private void generateQRCode_general(String data, ImageView img) throws WriterException { 

    com.google.zxing.MultiFormatWriter writer = new MultiFormatWriter(); 

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

    BitMatrix bm = writer.encode(finaldata, BarcodeFormat.CODE_128, 150, 150); 
    Bitmap ImageBitmap = Bitmap.createBitmap(180, 40, Config.ARGB_8888); 

    for (int i = 0; i < 180; i++) {//width 
     for (int j = 0; j < 40; j++) {//height 
      ImageBitmap.setPixel(i, j, bm.get(i, j) ? Color.BLACK : Color.WHITE); 
     } 
    } 

    if (ImageBitmap != null) { 
     qrcode.setImageBitmap(ImageBitmap); 
    } else { 
     Toast.makeText(getApplicationContext(), getResources().getString(R.string.userInputError), 
       Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

Вы можете добавить более подробную информацию. Возможно, это должно выглядеть так. Добавьте несколько скриншотов. – mikepenz

+0

Я знаю, что вашего repu недостаточно, чтобы загрузить изображение, вы можете добавить изображение с помощью http://tinypic.com/ и добавить ссылку здесь –

+0

посмотрите на этот проект https://github.com/skrymer/qrbuilder –

ответ

0

Чтобы добавить изображение поверх другого вы можете использовать этот метод:

public Bitmap combineImages(Bitmap top, Bitmap bottom) 
{ 
    Bitmap combined = null; 

    int width, height = 0; 

    if(top.getWidth() > bottom.getWidth()) { 
     width = top.getWidth() + bottom.getWidth(); 
     height = top.getHeight(); 
    } else { 
     width = bottom.getWidth() + bottom.getWidth(); 
     height = top.getHeight(); 
    } 

    combined = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 

    Canvas comboImage = new Canvas(combined); 

    comboImage.drawBitmap(top, 0f, 0f, null); 
    comboImage.drawBitmap(bottom, top.getWidth(), 0f, null); 

    return combined; 
} 

Это сольются два растровых изображений, и есть новый результирующий растровый рисунок, который вы можете использовать. Source (Есть много других источников, чтобы сделать это)

Если вы не хотите ничего нового растрового изображения, но только изображение поверх другого изображения вы можете использовать <RelativeLayout> и разместить два <ImageView> сек внутри него.


В качестве дополнительной записки я предполагаю, что вы также должны убедиться, что изображение не перекрывается необходимыми точками на QR-коде, который является другой темой тогда.

Смежные вопросы