| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /*
- * Copyright 2024 Axel Waggershauser
- */
- // SPDX-License-Identifier: Apache-2.0
- use zxingcpp::*;
- fn main() -> anyhow::Result<()> {
- let filename = std::env::args().nth(1).expect("no image file name provided");
- let formats = std::env::args().nth(2);
- let fast = std::env::args().nth(3).is_some();
- let image = image::open(&filename)?;
- #[cfg(not(feature = "image"))]
- let lum_img = image.into_luma8();
- #[cfg(not(feature = "image"))]
- let iv = ImageView::from_slice(&lum_img, lum_img.width(), lum_img.height(), ImageFormat::Lum)?;
- let formats = BarcodeFormats::from_str(formats.unwrap_or_default())?;
- let read_barcodes = BarcodeReader::new()
- .formats(formats)
- .try_harder(!fast)
- .try_invert(!fast)
- .try_rotate(!fast)
- .try_downscale(!fast)
- .return_errors(true);
- #[cfg(feature = "image")]
- let barcodes = read_barcodes.from(&image)?;
- #[cfg(not(feature = "image"))]
- let barcodes = read_barcodes.from(iv)?;
- if barcodes.is_empty() {
- println!("No barcode found.");
- } else {
- for barcode in barcodes {
- println!("Text: {}", barcode.text());
- println!("Bytes: {:?}", barcode.bytes());
- println!("Format: {}", barcode.format());
- println!("Content: {}", barcode.content_type());
- println!("Identifier: {}", barcode.symbology_identifier());
- println!("EC Level: {}", barcode.ec_level());
- println!("Error: {}", barcode.error());
- println!("Rotation: {}", barcode.orientation());
- println!("Position: {}", barcode.position());
- println!();
- }
- }
- Ok(())
- }
|