4
A
回答
0
我剛纔說的答案應該是使用libpng。然而在quick look at the documentation之後,我發現這種庫方式比所需要的複雜得多(容易的事情應該很容易,應該可能很難......在看完手冊之後,似乎用libpng簡單的事情幾乎是不可能的)。 PNG格式有gajillion選項,libpng是非常靈活和可插拔的,但顯然當你只是想做一些簡單的事情(比如保存一張不透明的圖像)時沒有簡單的捷徑。
我想我會試圖以原始格式轉儲圖像,然後使用imagemagick(可能通過管道)。
另一方面,你認爲使用Qt而不是裸X?捕獲屏幕很容易,你可以使用更易於管理的格式(QImage)。保存幾乎任何你喜歡的文件格式也是微不足道的(然而,在Qt中,png格式在CPU上有些困難,所以如果你想做一個實時視頻捕獲,不建議這麼做)。
1
這裏是一個C函數數據轉換爲JPEG圖像:
void write_jpeg(FILE *outfile, int width, int height, unsigned char *rgb, int quality)
{
struct jpeg_compress_struct cinfo;
struct jpeg_error_mgr jerr;
JSAMPROW scanline[1];
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_compress(&cinfo);
jpeg_stdio_dest(&cinfo, outfile);
cinfo.image_width = width;
cinfo.image_height = height;
cinfo.input_components = 3;
cinfo.in_color_space = JCS_RGB;
jpeg_set_defaults(&cinfo);
jpeg_set_quality(&cinfo, quality, TRUE);
jpeg_start_compress(&cinfo, TRUE);
while (cinfo.next_scanline < (unsigned int) height)
{
scanline[0] = rgb + 3 * width * cinfo.next_scanline;
jpeg_write_scanlines(&cinfo, scanline, 1);
}
jpeg_finish_compress(&cinfo);
jpeg_destroy_compress(&cinfo);
}
我相信你可以很容易地融入你的代碼這一點。您只需使用適當的庫來保存PNG文件(而不是jpeg文件)。
相關問題
- 1. 如何將base64字符串保存爲Qt中的png圖像?
- 2. Java BufferedImage爲PNG格式Base64字符串
- 3. 保存xlib XImage到PNG
- 4. Objective-C ios將base64字符串保存爲png文件
- 5. 如何將XImage保存爲位圖?
- 6. 保存Base64字符串爲.PNG不起作用
- 7. phantomjs:保存一個base64字符串作爲文件(PNG)
- 8. 如何到Base64 PNG圖像串爲PNG格式轉換成C#
- 9. 如何將base64字符串保存爲圖像服務器端
- 10. 如何使用ruby將base64字符串保存爲圖像
- 11. 如何將字符串保存爲FormFile格式的文件
- 12. 如何將Base64字符串轉換爲Png圖像Mvc5 C#?
- 13. 將base64字符串保存到Amazon S3
- 14. PHP保存來自base64的PNG * rgba *字符串
- 15. 如何保存字符串格式?
- 16. 確定字符串的格式(如Base64)
- 17. 如何從base64數據字符串中保存PNG圖像服務器端
- 18. 如何將ofn.lpstrFile保存爲字符串?
- 19. 將png或jpg圖像轉換爲Android中的Base64字符串
- 20. 如何使用Prawn將base64字符串轉換爲PNG而不保存在Rails中的服務器上
- 21. Javascript將字符串格式的GUID轉換爲Base64
- 22. 使用phonegap將base64字符串保存爲圖像?
- 23. 將格式化的字符串保存爲XAML
- 24. 將HTML格式的字符串保存爲doc(使用unicode)
- 25. 將字符串保存爲ISO日期格式的問題
- 26. 寫入位圖字符串內置文件*或XImage到PNG
- 27. 如何將圖像保存爲PNG格式?
- 28. Phonegap插件:如何將Base64字符串轉換爲Android中的PNG圖像
- 29. 保存爲PNG格式的DICOM圖像
- 30. 在Rails中保存Base64字符串
libpng可能會令人生畏,但爲簡單圖像創建編寫一些幫助程序/包裝應該不難:例如http://zarb.org/~gc/html/libpng.html – leonbloy
@leonbloy:34非空非註釋行僅用於加載圖像並不令人感到恐懼。這很傻。在Qt中是'QImage img(filename);'。 – 6502