Skip to main content

oneocr_rs/
image_input.rs

1use std::path::{Path, PathBuf};
2
3use image::{DynamicImage, ImageBuffer, Rgba};
4
5/// Input source for OCR processing.
6#[derive(Debug)]
7pub enum ImageInput {
8    /// Process an image from a file path.
9    FilePath(PathBuf),
10    /// Process an image from an in-memory buffer.
11    /// The buffer should contain RGBA pixel data.
12    Buffer(ImageBuffer<Rgba<u8>, Vec<u8>>),
13    /// Process a dynamic image.
14    Dynamic(DynamicImage),
15}
16
17impl From<&Path> for ImageInput {
18    fn from(path: &Path) -> Self {
19        ImageInput::FilePath(path.to_path_buf())
20    }
21}
22
23impl From<PathBuf> for ImageInput {
24    fn from(path: PathBuf) -> Self {
25        ImageInput::FilePath(path)
26    }
27}
28
29impl From<ImageBuffer<Rgba<u8>, Vec<u8>>> for ImageInput {
30    fn from(buffer: ImageBuffer<Rgba<u8>, Vec<u8>>) -> Self {
31        ImageInput::Buffer(buffer)
32    }
33}
34
35impl From<DynamicImage> for ImageInput {
36    fn from(image: DynamicImage) -> Self {
37        ImageInput::Dynamic(image)
38    }
39}