Android код печати изображения производит раздельную распечатку - PullRequest
0 голосов
/ 07 января 2020

Я уже более 3 месяцев изо всех сил пытаюсь реализовать печать логотипов / изображений из моего приложения android на моем «MiniPrinter» с поддержкой Bluetooth DP-HT201. После многих модификаций я наконец смог получить эту распечатку, которая должна быть Желаемый вывод введите описание изображения здесь

Это код:

 public void IntentPrint (String txtvalue){
        byte[] buffer = txtvalue.getBytes();
        byte[] PrintHeader = { (byte) 0xAA, 0x55,2,0 };
        PrintHeader[3]=(byte) buffer.length;
        InitPrinter();
        if(PrintHeader.length>128)
        {
            value+="\nValue is more than 128 size\n";
            Toast.makeText(this, value, Toast.LENGTH_LONG).show();
        }
        else
        {

           try
            {
                //Can we get the byte values of the image and output to the stream at this point
                //Get image Byte value
                IntentPixPrint3();  

                outputStream.write(txtvalue.getBytes());

                outputStream.close();
                socket.close();
            }
            catch(Exception ex)
            {
                value+=ex.toString()+ "\n" +"Excep IntentPrint \n";
                Toast.makeText(this, value, Toast.LENGTH_LONG).show();
            }
        }
    }




public void IntentPixPrint3(){

        try {

            Uri uri = Uri.parse("android.resource://"+BuildConfig.APPLICATION_ID+"/" +R.drawable.giposprint2);

            InputStream in = getContentResolver().openInputStream(uri);

            BufferedInputStream bis = new BufferedInputStream(in,1024*8);


            ByteArrayOutputStream out = new ByteArrayOutputStream();

            int len=0;
            byte[] buffer = new byte[1024];
            while((len = bis.read(buffer)) != -1){
                out.write(buffer, 0, len);
            }


            out.close();
            bis.close();

            byte[] data = out.toByteArray();
            bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

            print_image2(bitmap);


           // Bitmap bm = ((BitmapDrawable) getResources().getDrawable(R.drawable.testlogopng)).getBitmap();


        }
        catch (IOException e) {
            e.printStackTrace();
        }


    }

 private void print_image2(Bitmap bitmap) {


         try{
         convertBitmap(bitmap);
         outputStream.write(PrinterCommands.SET_LINE_SPACING_24);


         int offset = 0;
          while (offset < bitmap.getHeight()) {


             outputStream.write(PrinterCommands.SELECT_BIT_IMAGE_MODE);
                 for (int x = 0; x < bitmap.getWidth(); ++x) {

                     for (int k = 0; k < 3; ++k) {

                         byte slice = 0;
                         for (int b = 0; b < 8; ++b) {
                             int y = (((offset / 8) + k) * 8) + b;
                             int i = (y * bitmap.getWidth()) + x;
                             boolean v = false;
                             if (i < dots.length()) {
                                 v = dots.get(i);
                             }
                             slice |= (byte) ((v ? 1 : 0) << (7 - b));
                         }
                         outputStream.write(slice);


                     }
                 }
                 offset += 24;
             outputStream.write(PrinterCommands.FEED_LINE);
                    }
         outputStream.write(PrinterCommands.SET_LINE_SPACING_30);



         //Catches
     }catch (NullPointerException e) {
         e.printStackTrace();
     } catch (Exception e) {
         e.printStackTrace();
     }



 }

Это вывод, который я получаю Вывод, который я получаю, показывает несвязанное распространение и разбиение изображения

Я считаю, что моя ошибка исходит из модуля print_image и правильного БИТ инициализация PRINT. Это то, что я сейчас использую publi c stati c byte [] SELECT_BIT_IMAGE_MODE = {0x1B, 0x2A, 33, (byte) 255, 0}; , Не могли бы вы помочь с предложениями, чтобы помочь мне распечатать полное изображение? Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...