anastaciocintra / escpos-coffee

Java library for ESC/POS printer
https://anastaciocintra.github.io/escpos-coffee
MIT License
277 stars 72 forks source link

is it possible to print a logo? #53

Closed palanganero closed 3 years ago

palanganero commented 3 years ago

how can i print a logo?

anastaciocintra commented 3 years ago

Hi @palanganero, is you logo one image (jpeg or png ) file?

palanganero commented 3 years ago

yes

anastaciocintra commented 3 years ago

yeap, take a look on https://github.com/anastaciocintra/escpos-coffee/wiki/Images

palanganero commented 3 years ago

hello, i have this code for printing a logo, but i get an error when compile in that line: logoImage = ImageIO.read(Objects.requireNonNull(ImprimirLogoTicket.class.getClassLoader() .getResource("images.jpeg")));

this is the code:

`    public static void main(String[] args) throws IOException {
        ImageHelper helper = new ImageHelper();
        BufferedImage logoImage;
        //i have a error in requireNonNull on the next line
        logoImage = ImageIO.read(Objects.requireNonNull(ImprimirLogoTicket.class.getClassLoader()
                    .getResource("images.jpeg")));

        Bitonal algorithm = new BitonalThreshold(); 
        RasterBitImageWrapper imageWrapper = new RasterBitImageWrapper();
        PrintService printService = PrinterOutputStream.getPrintServiceByName("XP-58-2");
        PrinterOutputStream printerOutputStream = new PrinterOutputStream(printService);
        EscPos escpos = new EscPos(printerOutputStream);
      helper.write(escpos, new CoffeeImageImpl(logoImage),imageWrapper,algorithm);

    }`
palanganero commented 3 years ago

i tryed with this other code but sends me an error: buffered image cannot be converted to cofeeimage:

`        File file = new File("images.jpeg");
        //BufferedImage  imageBufferedImage = ImageIO.read(file);
        CoffeeImage  imageBufferedImage = ImageIO.read(file);
       // this wrapper uses esc/pos sequence: "GS 'v' '0'"
        RasterBitImageWrapper imageWrapper = new RasterBitImageWrapper();
        PrintService printService = PrinterOutputStream.getPrintServiceByName("XP-58-2");
        EscPos escpos = new EscPos(new PrinterOutputStream(printService));
        Bitonal algorithm = new BitonalThreshold(); 
        EscPosImage escposImage = new EscPosImage(imageBufferedImage, algorithm);     
        escpos.write(imageWrapper, escposImage);`
anastaciocintra commented 3 years ago

Hi @palanganero try something like this:

    public void printLogo() throws IOException {
        PrintService printService = PrinterOutputStream.getPrintServiceByName("TM-T20");
        EscPos escpos = new EscPos(new PrinterOutputStream(printService));

        BufferedImage bufferedImage = ImageIO.read(new File("/home/marco/desenv/dog.png"));
        CoffeeImage coffeeImage = new CoffeeImageImpl(bufferedImage);
        Bitonal algorithm = new BitonalOrderedDither();
        GraphicsImageWrapper imageWrapper = new GraphicsImageWrapper();
        imageWrapper.setJustification(EscPosConst.Justification.Center);
        EscPosImage escposImage = new EscPosImage(coffeeImage, algorithm);

        escpos.writeLF("Printing one image");
        escpos.write(imageWrapper, escposImage);
        escpos.feed(3).cut(EscPos.CutMode.FULL);
        escpos.close();
    }
palanganero commented 3 years ago

it prints strange characters. I tryed to print the dog photo you have in the examples and it prints strange characters. see: https://postimg.cc/rdXJXG33

anastaciocintra commented 3 years ago

Hi @palanganero you can find some explanation about the ImageWrapperInterface implementation at https://github.com/anastaciocintra/escpos-coffee/wiki/Images

and test with printLogo / printLogo2 and printLogo3

dog

you can download the dog.png ...

see you!


    //GraphicsImageWrapper
    public void printLogo() throws IOException {
        PrintService printService = PrinterOutputStream.getPrintServiceByName("TM-T20");
        EscPos escpos = new EscPos(new PrinterOutputStream(printService));

//        BufferedImage bufferedImage = ImageIO.read(new File("/home/marco/desenv/dog.png"));
        BufferedImage bufferedImage = ImageIO.read(new File("C:\\Users\\macin\\desenv\\github\\dog.png"));
        CoffeeImage coffeeImage = new CoffeeImageImpl(bufferedImage);
        Bitonal algorithm = new BitonalOrderedDither();
        GraphicsImageWrapper imageWrapper = new GraphicsImageWrapper();
        imageWrapper.setJustification(EscPosConst.Justification.Center);
        EscPosImage escposImage = new EscPosImage(coffeeImage, algorithm);

        escpos.writeLF("GraphicsImageWrapper");
        escpos.writeLF("Printing one image");
        escpos.write(imageWrapper, escposImage);
        escpos.feed(3).cut(EscPos.CutMode.FULL);
        escpos.close();
    }

    // RasterBitImageWrapper
    public void printLogo2() throws IOException {
        PrintService printService = PrinterOutputStream.getPrintServiceByName("TM-T20");
        EscPos escpos = new EscPos(new PrinterOutputStream(printService));

//        BufferedImage bufferedImage = ImageIO.read(new File("/home/marco/desenv/dog.png"));
        BufferedImage bufferedImage = ImageIO.read(new File("C:\\Users\\macin\\desenv\\github\\dog.png"));
        CoffeeImage coffeeImage = new CoffeeImageImpl(bufferedImage);
        Bitonal algorithm = new BitonalOrderedDither();

        RasterBitImageWrapper imageWrapper = new RasterBitImageWrapper();
        imageWrapper.setJustification(EscPosConst.Justification.Center);
        EscPosImage escposImage = new EscPosImage(coffeeImage, algorithm);

        escpos.writeLF("RasterBitImageWrapper");
        escpos.writeLF("Printing one image");
        escpos.write(imageWrapper, escposImage);
        escpos.feed(3).cut(EscPos.CutMode.FULL);
        escpos.close();
    }

    // BitImageWrapper
    public void printLogo3() throws IOException {
        PrintService printService = PrinterOutputStream.getPrintServiceByName("TM-T20");
        EscPos escpos = new EscPos(new PrinterOutputStream(printService));

//        BufferedImage bufferedImage = ImageIO.read(new File("/home/marco/desenv/dog.png"));
        BufferedImage bufferedImage = ImageIO.read(new File("C:\\Users\\macin\\desenv\\github\\dog.png"));
        CoffeeImage coffeeImage = new CoffeeImageImpl(bufferedImage);
        Bitonal algorithm = new BitonalOrderedDither();

        BitImageWrapper imageWrapper = new BitImageWrapper();;
        imageWrapper.setJustification(EscPosConst.Justification.Center);
        EscPosImage escposImage = new EscPosImage(coffeeImage, algorithm);

        escpos.writeLF("BitImageWrapper");
        escpos.writeLF("Printing one image");
        escpos.write(imageWrapper, escposImage);
        escpos.feed(3).cut(EscPos.CutMode.FULL);
        escpos.close();
    }
palanganero commented 3 years ago

with "RasterBitImageWrapper" prints right.Thank you!

Ahmedmedhat187 commented 3 years ago

Hello,

I am trying to print png image using this code

        BufferedImage bufferedImage = ImageIO.read(new File(""));

        Bitonal algorithm = new BitonalOrderedDither();
        RasterBitImageWrapper imageWrapper = new RasterBitImageWrapper();
        imageWrapper.setJustification(EscPosConst.Justification.Center);
        EscPosImage escposImage = new EscPosImage(new CoffeeImageImpl(bufferedImage), algorithm);

but BufferedImage and ImageIO shown with red color as not recognized at android what should I do, and how to print bitmap image

Thanks in advance

anastaciocintra commented 3 years ago

@Ahmedmedhat187 Take a look at https://github.com/anastaciocintra/escpos-coffee-samples/tree/master/miscellaneous/AndroidImage