如何从c ++中的Imagemagick图像获取缓冲区 [英] how to get buffer from Imagemagick image in c++

查看:850
本文介绍了如何从c ++中的Imagemagick图像获取缓冲区的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用ImageMagick库进行图像处理。我需要加载一个'bmp'图像,将其转换为jpeg,将其加载到缓冲区并通过网络发送。

I am using ImageMagick library for image manipulation. I need to load a 'bmp' image, convert it to jpeg, load it in a buffer and send it across the network.

但是,我无法找到在ImageMagick中的任何支持功能,可以转换和存储在缓冲区中的数据。我只能写入文件。尝试使用 Magick :: Blob 但仍然没有用。

However, I am not able to find any supporting function in ImageMagick which can convert and store data in buffer. I am only able to write in file. Tried using Magick::Blob but still of no use.

以下代码用于加载,转换和写入in file:

Following code is used to load, convert and write in file:

Magick::Image img("Sample.bmp");
img.magick("jpeg");
img.write("Output.jpeg");

编辑:

Blob as:

Magick::Blob myBlob;
img.write(&myBlob);
const void *myData = myBlob.data();

但这里我不能将myData转换为 const char * 缓冲区没有任何损失。

But here I can't convert myData to const char* buffer without any loss.

推荐答案


我现有的套接字连接在两端接受字符串流。这就是为什么我需要 const char *
中找到转换函数 base64(),它返回字符串。
这解决了我的问题。作为参考,最终代码为becoms:

Thanks a lot for the answers. My existing socket connection accepts string stream at both ends. That's why I needed const char*. Found conversion function base64() in Magick::Blob which returns string. This solved my problem. For reference, the final code becoms:

Magick::Image img("Sample.bmp");
Magick::Blob blob; 
img.magick( "JPEG" )
img.write( &blob );
std::string myStr = myBlob.base64();

这篇关于如何从c ++中的Imagemagick图像获取缓冲区的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆