C++ 将二进制流转换为png格式

C++ 将二进制流转换为png格式,c++,png,C++,Png,我会尽量澄清 我的项目构想如下: 我采用C++实现了几种压缩算法,然后我用一个文本文件,应用了我所实现的压缩算法,然后在压缩文件上应用了几种加密算法,现在我只剩下最后一步了,就是把这些加密文件转换成任意格式的图像。(我在考虑png,因为它是最清晰的一个) 我的问题是: 如何将二进制流转换为png格式? 我知道这张照片看起来像垃圾。 我希望将二进制流转换为png格式,这样我就可以将其作为图像查看 我用C++,希望有人能帮我< /p> (我以前关闭的线程) 先发制人 Help19我认为最好使用二维

我会尽量澄清

我的项目构想如下:

我采用C++实现了几种压缩算法,然后我用一个文本文件,应用了我所实现的压缩算法,然后在压缩文件上应用了几种加密算法,现在我只剩下最后一步了,就是把这些加密文件转换成任意格式的图像。(我在考虑png,因为它是最清晰的一个)

我的问题是: 如何将二进制流转换为png格式? 我知道这张照片看起来像垃圾。 我希望将二进制流转换为png格式,这样我就可以将其作为图像查看 我用C++,希望有人能帮我< /p> (我以前关闭的线程)

先发制人
Help19

我认为最好使用二维图像,而不是将数据块转换为png图像


您可以使用的代码之一是。

我认为最好使用二维图像,而不是将数据块转换为png图像


您可以使用的代码之一是。

如果您确实必须将数据存储在PNG中,最好使用第三方库来为您完成这项工作。OpenCV将允许您将数据存储并以PNG或其支持的任何其他格式保存在磁盘上

执行此操作的代码如下所示:

#include <cv.h>
#include <highgui.h>

IplImage* out_image = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, bits_pr_pixel);

char* buff = new char[width * height * bpp];
// then copy your data to this buff

out_image->imageData = buff; 

if (!cvSaveImage("fake_picture.png", out_image))
{
    std::cout << "ERROR: Failed cvSaveImage" << std::endl;
}

cvReleaseImage(&out_image);
#包括
#包括
IplImage*out_image=cvCreateImage(cvSize(宽度、高度)、IPL_深度_8U、位_像素);
char*buff=新字符[宽度*高度*bpp];
//然后将数据复制到此buff
out_image->imageData=buff;
如果(!cvSaveImage(“fake_picture.png”,out_image))
{

std::cout如果您真的必须将数据存储在PNG中,最好使用第三方库来为您完成这项工作。OpenCV将允许您将数据存储并以PNG或其支持的任何其他格式保存在磁盘上

执行此操作的代码如下所示:

#include <cv.h>
#include <highgui.h>

IplImage* out_image = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, bits_pr_pixel);

char* buff = new char[width * height * bpp];
// then copy your data to this buff

out_image->imageData = buff; 

if (!cvSaveImage("fake_picture.png", out_image))
{
    std::cout << "ERROR: Failed cvSaveImage" << std::endl;
}

cvReleaseImage(&out_image);
#包括
#包括
IplImage*out_image=cvCreateImage(cvSize(宽度、高度)、IPL_深度_8U、位_像素);
char*buff=新字符[宽度*高度*bpp];
//然后将数据复制到此buff
out_image->imageData=buff;
如果(!cvSaveImage(“fake_picture.png”,out_image))
{

std::cout做你想做的事(将数据存储在图像中)PNG是一个不错的选择。这是官方的PNG编码库。它是用C编写的,所以你应该能够很容易地把它与C++代码连接起来。我连接的主页包含了源代码的链接,这样你就可以把LBPNG编译到你的项目中,同时也可以使用它。关于使用libpng的简要说明:

  • 它使用setjmp和longjmp进行错误处理。如果您以前没有使用过C的跳远功能,这会有点奇怪,但是手册提供了一些很好的示例
  • 它用于压缩,因此您还必须将其编译到项目中

做你想做的事(将数据存储在图像中)PNG是一个不错的选择。这是官方的PNG编码库。它是用C编写的,所以你应该能够很容易地把它与C++代码连接起来。我连接的主页包含了源代码的链接,这样你就可以把LBPNG编译到你的项目中,同时也可以使用它。关于使用libpng的简要说明:

  • 它使用setjmp和longjmp进行错误处理。如果您以前没有使用过C的跳远功能,这会有点奇怪,但是手册提供了一些很好的示例
  • 它用于压缩,因此您还必须将其编译到项目中

没有理解RU所说的内容?我必须将数据转换为图像格式(png)没有理解RU所说的内容?我必须将数据转换为图像格式(png)