import ch.codeblock.qrinvoice.MimeType;
import ch.codeblock.qrinvoice.QrInvoiceDocumentScanner;
import ch.codeblock.qrinvoice.model.QrInvoice;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.List;
import java.util.Optional;
// ...
// either provide an input stream or a byte array
final InputStream imageInputStream = ...;
try {
final Optional<QrInvoice> qrInvoiceOptional = QrInvoiceDocumentScanner.create(MimeType.PNG).scanDocumentUntilFirstSwissQrCode(imageInputStream);
if (qrInvoiceOptional.isPresent()) {
final QrInvoice qrInvoice = qrInvoiceOptional.get();
// access QR-Invoice structure
final BigDecimal amount = qrInvoice.getPaymentAmountInformation().getAmount();
// ...
} else {
// no Swiss QR Code found
}
} catch (IOException e) {
// io exception during read
}