pub struct RawProcessor { /* private fields */ }Expand description
RAW 图像文件的主要处理器
这是 RawLib 库的核心结构体,提供了与 LibRaw 库交互的高级接口。 它使用 RAII 模式管理 LibRaw 实例的生命周期,确保资源被正确释放。
§安全性
- 使用 RAII 模式自动管理 LibRaw 实例
- 实现了 Send trait,支持跨线程使用
- 所有 FFI 调用都被包装在安全的接口中
Implementations§
Source§impl RawProcessor
impl RawProcessor
Sourcepub fn dcraw_process(&mut self) -> Result<()>
pub fn dcraw_process(&mut self) -> Result<()>
Process the RAW data (demosaic, white balance, etc.)
Sourcepub fn unpack_thumb(&mut self) -> Result<()>
pub fn unpack_thumb(&mut self) -> Result<()>
Unpack thumbnail data
Sourcepub fn extract_thumbnail<P: AsRef<Path>>(path: P) -> Result<ThumbnailData>
pub fn extract_thumbnail<P: AsRef<Path>>(path: P) -> Result<ThumbnailData>
Extract thumbnail as raw bytes
This method opens the RAW file, extracts the embedded thumbnail, and returns it as a byte vector. The thumbnail is typically in JPEG format.
§Arguments
path- Path to the RAW file
§Returns
Returns ThumbnailData containing the thumbnail image data and metadata
§Example
use rawlib::RawProcessor;
let thumb_data = RawProcessor::extract_thumbnail("image.cr2").unwrap();
std::fs::write("thumb.jpg", &thumb_data.data).unwrap();这是提取缩略图的最简单方法,它处理了整个流程:
- 创建新的处理器实例
- 打开 RAW 文件
- 解包缩略图数据
- 获取处理后的缩略图数据
Sourcepub fn get_thumbnail(&self) -> Result<ThumbnailData>
pub fn get_thumbnail(&self) -> Result<ThumbnailData>
从已打开和解包的文件中获取缩略图数据
这个方法假设:
- 文件已经被
open_file()打开 - 缩略图数据已经被
unpack_thumb()解包
§返回值
Ok(ThumbnailData) - 包含格式、尺寸和原始数据的缩略图信息
Err(RawError) - 获取缩略图失败时的错误信息
Sourcepub fn version_number() -> i32
pub fn version_number() -> i32
获取 LibRaw 版本号(整数格式)
返回 LibRaw 库的数值版本号,例如 5380(对应 0.21.4)。 版本号编码格式为:major * 10000 + minor * 100 + patch
§返回值
整数格式的版本号
Trait Implementations§
Source§impl Default for RawProcessor
默认构造函数实现
impl Default for RawProcessor
默认构造函数实现
提供了默认构造函数,使 RawProcessor 可以更容易地在需要默认值的 场景中使用。如果创建失败,会 panic,因为这是默认实现的一部分。
Source§impl Drop for RawProcessor
RAII 资源清理实现
impl Drop for RawProcessor
RAII 资源清理实现
当 RawProcessor 实例离开作用域时,自动释放 LibRaw 分配的资源。 这确保了即使在发生错误时也不会出现内存泄漏。
impl Send for RawProcessor
线程安全实现
LibRaw 本身不是线程安全的,但是 RawProcessor 实例可以安全地 在不同线程之间传递(只要不在多个线程中同时使用同一个实例)。 Send trait 允许我们将 RawProcessor 实例发送到其他线程。