Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image Rust:使用图像编码器将JPEG图像编码为PNG_Image_Rust_Png_Decode_Encode - Fatal编程技术网

Image Rust:使用图像编码器将JPEG图像编码为PNG

Image Rust:使用图像编码器将JPEG图像编码为PNG,image,rust,png,decode,encode,Image,Rust,Png,Decode,Encode,我正在使用Rust中的图像()板条箱,用以下代码将GIF图像编码为PNG: fn encode\u png(&self,img:&DynamicImage)->结果{ 让file=file::create(“icon.png”).unwrap(); 让ref mut buff=BufWriter::new(文件); 让编码器=PNGEncoder::new(buff); 匹配编码器.encode(&img.to_bytes(),256,256,img.color()){ Ok()=>Ok(())

我正在使用Rust中的
图像
()板条箱,用以下代码将GIF图像编码为PNG:

fn encode\u png(&self,img:&DynamicImage)->结果{
让file=file::create(“icon.png”).unwrap();
让ref mut buff=BufWriter::new(文件);
让编码器=PNGEncoder::new(buff);
匹配编码器.encode(&img.to_bytes(),256,256,img.color()){
Ok()=>Ok(()),
Err(Err)=>Err(Error::new(Err.description()))
}
}
img
变量表示一个
DynamicImage
,我使用
open
方法从同一个板条箱中打开了它

发生的情况是,程序成功运行,但输出文件被破坏。 我根据以下文档编写了代码:


提前谢谢

我上面的代码的问题是,我给编码器的图像尺寸作为参数(256,256)是错误的

我希望图像的大小调整为256x256,但编码器希望当前图像的尺寸能够按预期工作

以下代码正在按预期运行:

fn encode\u png(&self,img:&DynamicImage)->结果{
让file=file::create(“icon.png”).unwrap();
让ref mut buff=BufWriter::new(文件);
让编码器=PNGEncoder::new(buff);
匹配编码器.encode(&img.to_bytes(),img.dimensions().0,img.dimensions().1,img.color()){
Ok()=>Ok(()),
Err(Err)=>Err(Error::new(Err.description()))
}
}
感谢您在评论中指出这一点

由于我需要调整图像大小,然后将其编码为PNG文件,因此我最终得到以下结果:

fn encode\u png(&self,img:&DynamicImage)->结果{
如果img.dimensions().0!=256{
设resized=img.resize_精确(256,256,FilterType::Gaussian);
返回self.encode_png(&调整大小);
}
让file=file::create(“icon.png”).unwrap();
让ref mut buff=BufWriter::new(文件);
让编码器=PNGEncoder::new(buff);
匹配编码器.encode(&img.to_bytes(),img.dimensions().0,img.dimensions().1,img.color()){
Ok()=>Ok(()),
Err(Err)=>Err(Error::new(Err.description()))
}
}

您知道结果的问题是什么吗?该文件与正确编码的文件相比如何?另外,您的设置(如原始文件和图像尺寸)是否正确?谢谢您询问@SolomonUcko!当你问尺寸是否正确时,你帮我找出了问题所在!谢谢