Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Добавить логотип перед QR-кодом

Автор вопроса: user3851513Ответов: 1

Я делаю генератор QR-кода, используя библиотеку zxing для Android. Приложение работает просто отлично. Однако мне нужно добавить логотип в центр сгенерированного 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();
    }
}
  • Вы можете добавить некоторые подробности. Возможно, как это должно выглядеть. Добавьте несколько скриншотов. mikepenz 09.05.2015
  • Я знаю, что вашего репу недостаточно для загрузки изображения, вы можете добавить изображение с помощью tinypic.com и добавить ссылку здесь Qadir Hussain 09.05.2015
  • посмотрите на этот проект github.com/skrymer/qrbuilder Qadir Hussain 09.05.2015
  • @mikepenz внешний вид текущего приложения похож на этот учебник: kreativdeveloper.wordpress. com/2015/01/08/ .. и я хочу, чтобы QR-код был похож на [это изображение] (ralree.com/newblog/wp-content/uploads/2012/08/barcode-image.png) user3851513 10.05.2015

androidqr-codezxing

Ответы

Ответ 1 · mikepenz

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

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

Это объединит два растровых изображения, и вы сможете использовать новое результирующее растровое изображение. <RelativeLayout>Images_in_Android_using_Canvas" rel="nofollow">Источник (для этого есть много других источников)

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


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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы