Rust-Image를 사용하여 절차적으로 이미지 생성
이 기사에서는 Rust-image를 사용하여 절차적으로 이미지를 생성하는 방법을 배웁니다.
Rust-Image를 사용하여 절차적으로 이미지 생성
상자 이미지
이 크레이트는 이미지 인코딩 및 디코딩과 기본적인 이미지 조작 기능을 위한 네이티브 Rust 구현을 제공합니다. 추가 문서는 GitHub에서 편리하게 볼 수 있는 README.md
파일에서도 사용할 수 있습니다.
이 라이브러리는 이미지 인코딩을 위한 통합 인터페이스와 콘텐츠에 대한 단순 일반 버퍼라는 두 가지 근본적인 문제에 대한 솔루션을 제공합니다. 각 기능은 다른 기능과 독립적으로 사용할 수 있습니다.
추가 특수 상자로 보완할 수 있는 작고 안정적인 일상 작업에 초점을 맞춥니다. 또한 라이브러리는 종속성이 거의 없는 보안 솔루션을 선호합니다.
io::Reader
를 사용하여 이미지를 로드하려면:
use std::io::Cursor;
use image::io::Reader as ImageReader;
let img_one = ImageReader::open("imagetest.png")?.decode()?;
let img_two = ImageReader::new(Cursor::new(bytes)).with_guessed_format()?.decode()?;
이미지를 저장하려면:
img.save("theimage.jpg")?;
let mut bytes: Vec<u8> = Vec::new();
img2.write_to(&mut Cursor::new(&mut bytes), image::ImageOutputFormat::Png)?;
이미지 버퍼
두 가지 기본 이미지 저장 형식:
- 정적으로 유형이 지정된 이미지 데이터를 저장하는
이미지 버퍼
. DynamicImage
는 지원되는ImageBuffer
형식 간의 변환을 지원하는 열거형입니다.
몇 가지 특수 옵션 외에도:
- 변경 가능한 이미지 버퍼에 대한
GenericImage
특성. - 읽기 전용 GenericImage 참조에 대한
GenericImageView
특성. - 일반 채널 매트릭스 및 외부 인터페이스에 대한 상호 운용성 유형을 포함하는
flat
모듈.
제공된 모든 이미지 처리 기능은 GenericImageView
및 GenericImage
특성을 구현하고 ImageBuffer.
를 반환하는 유형에서 작동합니다. 모든 이미지 형식 디코더는 이미지 메타데이터를 검색하고 이미지를 디코딩하기 위한 기본적인 방법을 제공하는 ImageDecoder
특성을 구현합니다.
일부 형식은 한 번에 이미지의 일부만 디코딩할 수 있는 ImageDecoderExt
구현을 추가로 제공합니다.
가장 중요한 디코딩 기술은 다음과 같습니다.
- 차원: 이미지의 너비와 높이가 있는 튜플을 반환합니다.
- 색상 유형: 이 디코더가 출력하는 이미지 데이터의 색상 유형을 반환합니다.
- 이미지 읽기: 전체 이미지를 바이트 배열로 디코딩합니다.
동적 이미지
DynamicImage
는 지원되는 모든 ImageBuffer<P>
유형을 열거합니다. 정확한 이미지 유형은 실행 중에 결정됩니다.
이미지를 열었을 때 반환되는 타입입니다. DynamicImage
는 편의를 위해 모든 이미지 처리 기능을 다시 구현합니다.
RGBA 픽셀의 경우 DynamicImage
는 GenericImageView
및 GenericImage
특성을 구현합니다.