C++11 C++;用于将JPEG/PNG图像转换为原始图像格式的库

C++11 C++;用于将JPEG/PNG图像转换为原始图像格式的库,c++11,png,jpeg,image-conversion,raw,C++11,Png,Jpeg,Image Conversion,Raw,我已经尝试搜索了一天将JPEG&PNG转换为原始图像格式(*.RAW format),但没有找到任何结果,所有结果都是原始的JPEG/PNG格式。最后我决定在这里提问,希望能得到答案 < >我想把JPEG和PNG格式的图像转换成原始图像格式(*.WRAW),为此我需要C++库来完成这项工作。另外,如果你能提出一些逐步的过程来实现它,将对C++有帮助。因为我没有这方面的经验,也没有创业经验 请给我同样的指导。非常感谢你的帮助 谢谢从技术上讲,您无法将JPEG/PNG转换为原始图像。因为原始图像包含

我已经尝试搜索了一天将JPEG&PNG转换为原始图像格式(*.RAW format),但没有找到任何结果,所有结果都是原始的JPEG/PNG格式。最后我决定在这里提问,希望能得到答案

< >我想把JPEG和PNG格式的图像转换成原始图像格式(*.WRAW),为此我需要C++库来完成这项工作。另外,如果你能提出一些逐步的过程来实现它,将对C++有帮助。因为我没有这方面的经验,也没有创业经验

请给我同样的指导。非常感谢你的帮助


谢谢

从技术上讲,您无法将JPEG/PNG转换为原始图像。因为原始图像包含大量从相机捕获的数据。JPEG图像是一种压缩图像格式,其中大部分信息被窃取。因此,您不能编写一个程序来扭曲数据的传输并恢复原始图像。(即使您编写了一个程序,生成的原始文件也不等同于最初捕获的原始文件)

“原始”不是一种定义良好的格式

根据您与谁交谈,这可能意味着制造商的专有未处理格式,例如:

  • 尼康的NEF格式或
  • 佳能CR2格式或
  • Adobe的DNG格式
几乎没有软件支持编写这样的文件
dcraw
ufraw
支持读取它们

或者它可能意味着没有标题或大小信息的直接RGB888字节。许多图书馆支持这一点:

  • CImg可能是最简单的-
  • OpenCV可以做到这一点
  • ImageMagick Magick++可以做到这一点
  • libvips
    可以做到这一点

要将JPEG/PNG转换为原始RGB字节,实际上不需要编写任何C/C++代码,只需在命令行中使用ImageMagick

magick input.png -depth 8 RGB:result.raw

感谢@hasi90的回复。如果我丢失了一些信息就可以了,很明显,我们无法将所有的东西从JPEG/PNG恢复到RAW。因此,C++中有任何库可以做到这一点吗?同样,在JPEG/PNG信息中,与原始格式相比,压缩的大小减小了(JPEG是有损耗的,而PNG是无松动的)。但是在转换为RAW时,我们可以解压缩JPEG/PNG并将其转换为RAW。在这个过程中,我们肯定无法检索到它们原始的对应物,但检索到的信息比原始的对应物少。那么,如何实现它,还有C++库吗?为什么要投票?有什么问题吗?我试了很长时间,找到了解决办法,然后我在这里问。关于你的问题没有那么多答案。你说得很对。但你可以分两步思考,我想你可能会找到答案:首先解压缩你的图像,然后将其存储在原始图像中(无论你为什么这么做)。请注意,要求我们推荐或查找工具、软件库等的问题与堆栈溢出无关。请浏览,特别是看看你能问些什么。最后一票不是我,但这可能是你得到它的原因)@FluffyKitten,我同意,但我为什么问这个问题,因为我在互联网上搜索了一整天,包括SO,但能找到任何图书馆,我已经筋疲力尽了。最后,我决定在这里问,如果你能得到任何信息,因为肯定有人谁在它的专业知识或使用它。为什么我要求图书馆,因为我的时间很短,需要在项目中使用这个图书馆。现在,在马文的指导下,如果我能得到我想要的,我将朝着这个方向努力。顺便说一句,我将遵循社区指南。谢谢@Marvin,我正朝着这个方向努力,希望能找到解决方案。同时,如果你能回答这个问题,并告诉我在你建议的答案之后,从JPEG到原始格式该做什么。顺便说一句,我正在调查。感谢Mark Setchell的宝贵回复。我必须将转换后的原始图像文件传递给SDK API,SDK API接受*.RAW图像格式进行某些处理。那么,有可能转换吗?上面来自Mark Setchell的原始文件只是一个字节数据字符串。您必须告诉阅读软件图像的宽度、高度和深度,以便正确阅读。您需要查看SDK API接受原始图像所需的信息。@Aasim我不知道。正如我所说,原始格式没有很好的定义。您需要检查SDK或其供应商,了解它们的含义。@MarkSetchell,您能看到吗,旋转JPEG图像?