@@ -26,6 +26,7 @@ pub enum EncodeOptions {
2626 Pnm ,
2727 Tga ,
2828 Farbfeld ,
29+ RawPixels ,
2930}
3031
3132#[ napi]
@@ -545,6 +546,9 @@ impl Task for EncodeTask {
545546 EncodeOptions :: Pnm => ImageFormat :: Pnm ,
546547 EncodeOptions :: Tga => ImageFormat :: Tga ,
547548 EncodeOptions :: Farbfeld => ImageFormat :: Farbfeld ,
549+ EncodeOptions :: RawPixels => {
550+ return Ok ( EncodeOutput :: Buffer ( dynamic_image. as_bytes ( ) . to_vec ( ) ) ) ;
551+ }
548552 } ;
549553 let mut output: Cursor < Vec < u8 > > = Cursor :: new ( Vec :: with_capacity (
550554 ( dynamic_image. width ( ) * dynamic_image. height ( ) * 4 ) as usize ,
@@ -767,6 +771,26 @@ impl Transformer {
767771 self
768772 }
769773
774+ #[ napi]
775+ /// Return this image's pixels as a native endian byte slice.
776+ pub fn raw_pixels ( & self , signal : Option < AbortSignal > ) -> AsyncTask < EncodeTask > {
777+ AsyncTask :: with_optional_signal (
778+ EncodeTask {
779+ image : self . dynamic_image . clone ( ) ,
780+ options : EncodeOptions :: RawPixels ,
781+ image_transform_args : self . image_transform_args ,
782+ } ,
783+ signal,
784+ )
785+ }
786+
787+ #[ napi]
788+ /// Return this image's pixels as a native endian byte slice.
789+ pub fn raw_pixels_sync ( & self ) -> Result < Buffer > {
790+ let meta = self . dynamic_image . get ( false ) ?;
791+ Ok ( meta. image . as_bytes ( ) . to_vec ( ) . into ( ) )
792+ }
793+
770794 #[ napi]
771795 /// The quality factor `quality_factor` ranges from 0 to 100 and controls the loss and quality during compression.
772796 /// The value 0 corresponds to low quality and small output sizes, whereas 100 is the highest quality and largest output size.
0 commit comments