Image Rust:使用图像编码器将JPEG图像编码为PNG
我正在使用Rust中的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(())
图像()板条箱,用以下代码将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!当你问尺寸是否正确时,你帮我找出了问题所在!谢谢