在 C++ 中将 bmp 转换为 LINEAR jpeg
Posted
技术标签:
【中文标题】在 C++ 中将 bmp 转换为 LINEAR jpeg【英文标题】:Convert bmp to LINEAR jpeg in C++ 【发布时间】:2016-08-31 09:55:51 【问题描述】:我有一个 image.bmp,我想把它转换成 img.jpg。但我希望能够更改 jpg 图像的参数,例如伽玛校正。我如何在 C++ 中做到这一点,也许使用 opencv 或 imagemagick ?
我已经尝试过使用 CImage 类,但是当我将图像从 bmp 转换为 jpg 时,它太小(从 80MB 到 2MB)并且我丢失了很多信息。所以这就是我希望能够控制参数的原因。
谢谢
【问题讨论】:
查看 Eric 的出色答案,代码为***.com/a/39233320/2836621 @MarkSetchell 所以我应该在 bmp 图像上应用 gamma 函数然后将其写为 jpg 吗? 我想是的 - 我不知道你的形象是什么样的,也不知道你想要达到什么目的,也不知道为什么你认为 CImg 不起作用...... CImage 正在工作,只是我无法控制质量、伽马校正等参数。我没有足够的内存,所以我想将它们转换为 JPG,但我也不想丢失很多信息 @dasada 你应该转换image
,然后将其保存为JPG。检查下面的代码。
【参考方案1】:
ImageMagick 具有称为 Magick++ 的 C++ API。使用Magick::Image
类进行图片处理,例如伽马校正可以通过image.gamma(1.0);
方法完成。方法image.magick( "JPEG" )
将输出格式设置为JPEG
。有关更多详细信息,请参阅Image++ 示例。
int main(int argc,char **argv)
InitializeMagick(*argv);
Image image( "picture.bmp" );
// Do your transformation on 'image' here
image.magick( "JPEG" )
image.write( "converted.jpg" );
return 0;
【讨论】:
以上是关于在 C++ 中将 bmp 转换为 LINEAR jpeg的主要内容,如果未能解决你的问题,请参考以下文章
在 C / C++ 中将 int* 转换为 int(*)[n]
在 ASP.net 中将 BMP 转换为 PDF 的最简单方法是啥