我正在使用 Ubuntu Linux 和 C++ 进行开发。
我将桌面图像捕获到 XImage。
如何将 XImage 保存为 PNG 格式的 base64 字符串?
最佳答案
这是一个将 XImage
数据转换为 jpeg 图像的 C 函数:
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 文件)。