簡體   English   中英

將二進制流轉換為png格式

[英]converting a binary stream into a png format

我會盡力清楚......

我的項目理念如下:

我采用了幾種我用C ++實現的壓縮算法,之后我拿了一個文本文件並應用了我實現的壓縮算法,然后對壓縮文件應用了幾種加密算法,現在我留下最后一步來轉換這些加密文件到任何格式的圖像(我正在考慮png,因為它是最清晰的)。

我的問題是:如何將二進制流轉換為png格式? 我知道圖像會看起來像垃圾。 我希望將二進制流轉換為png格式,這樣我就可以將其視為我正在使用C ++的圖像,希望有人可以幫助我

(我之前關閉的帖子) https://stackoverflow.com/questions/5773638/converting-a-text-file-to-any-format-of-images-png-etc-c

thanx提前幫助19

如果你真的必須將數據存儲在PNG中,最好使用像OpenCV這樣的第三方庫來為你完成工作。 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);

上面的代碼只是為了讓您了解如何使用OpenCV完成所需的操作。

我認為你最好使用二維條形碼,而不是將你的數據blob轉換為png圖像。

您可以使用的代碼之一是QR碼

要做到你的想法(在圖像中存儲數據),你需要一個無損圖像格式。 PNG是一個很好的選擇。 libpng是官方的PNG編碼庫。 它是用C語言編寫的,因此您應該能夠輕松地將其與C ++代碼連接起來。 我鏈接到你的主頁包含兩個源代碼的鏈接,因此你可以將libpng編譯到你的項目中,以及如何使用它的手冊。 關於使用libpng的一些快速說明:

  • 它使用setjmp和longjmp進行錯誤處理。 如果您以前沒有使用C的跳遠功能,這有點奇怪,但手冊提供了一些很好的例子。
  • 它使用zlib進行壓縮,因此您還必須將其編譯到項目中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM