ZXingQtWriter.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * Copyright 2023 Axel Waggershauser
  3. */
  4. // SPDX-License-Identifier: Apache-2.0
  5. #include "BarcodeFormat.h"
  6. #ifdef ZXING_EXPERIMENTAL_API
  7. #include "WriteBarcode.h"
  8. #else
  9. #include "BitMatrix.h"
  10. #include "MultiFormatWriter.h"
  11. #endif
  12. #include <QDebug>
  13. #include <QImage>
  14. namespace ZXingQt {
  15. QImage WriteBarcode(QStringView text, ZXing::BarcodeFormat format)
  16. {
  17. using namespace ZXing;
  18. #ifdef ZXING_EXPERIMENTAL_API
  19. auto barcode = CreateBarcodeFromText(text.toString().toStdString(), format);
  20. auto bitmap = WriteBarcodeToImage(barcode);
  21. #else
  22. auto writer = MultiFormatWriter(format);
  23. auto matrix = writer.encode(text.toString().toStdString(), 0, 0);
  24. auto bitmap = ToMatrix<uint8_t>(matrix);
  25. #endif
  26. return QImage(bitmap.data(), bitmap.width(), bitmap.height(), bitmap.width(), QImage::Format::Format_Grayscale8).copy();
  27. }
  28. } // namespace ZXingQt
  29. int main(int argc, char* argv[])
  30. {
  31. if (argc != 4) {
  32. qDebug() << "usage: ZXingQtWriter <format> <text> <filename>";
  33. return 1;
  34. }
  35. auto format = ZXing::BarcodeFormatFromString(argv[1]);
  36. auto text = QString(argv[2]);
  37. auto filename = QString(argv[3]);
  38. auto result = ZXingQt::WriteBarcode(text, format);
  39. result.save(filename);
  40. return 0;
  41. }