• 6352阅读
  • 5回复

怎么把图片信息变成char*的 [复制链接]

上一主题 下一主题
离线浪迹江湖
 

只看楼主 倒序阅读 楼主  发表于: 2009-11-18
/root/1.jpg,除了用C语言的函数外,Qt似乎没有方法把图片信息变为字符数组型的....,
不知道有没有什么好方法
离线dbzhang800

只看该作者 1楼 发表于: 2009-11-18
uchar * bits ()
const uchar * bits () const

QDataStream & operator<< ( QDataStream & stream, const QImage & image )
QDataStream & operator>> ( QDataStream & stream, QImage & image )
离线浪迹江湖

只看该作者 2楼 发表于: 2009-11-19
如楼上仁兄所说,我写了如下代码:

    QImage image("/root/cor.jpg");//已经存在的图片
    char* shuju=(char* )image.bits();//转化为字符数组
    QFile file("/root/cor6.jpg");//把字符数组要保存到的文件
    file.open(QIODevice::ReadWrite);
    if(-1==file.write(shuju,(qint64)strlen(shuju)))//把字符数字写进文件
    {
        qDebug()<<"error";
    }
    file.close();
可编辑/root/cor.jpg只有76269个字符,可/root/cor6.jpg却有236364个字符,
而且用图片浏览器打开提示错误。
不知道咋整
离线dancindream

只看该作者 3楼 发表于: 2009-11-19
strlen是遇到'\0'返回长度
你的图片数据的地址随便你转成什么指针都可以
你把图片的数据地址用一个char*来指向
但是没有保存长度
所以
你在file.write的时候后面的长度本来就错了
最保险的是你把长度记录下来
如果图片数据里出现‘\0’,那么strlen就是比实际短
如果图片数据没有出现'\0',那么strlen就比实际长
离线dbzhang800

只看该作者 4楼 发表于: 2009-11-19
楼上指出了一个严重的问题。

更严重的问题是,楼主似乎没图片格式没什么概念
离线浪迹江湖

只看该作者 5楼 发表于: 2009-11-19
谢谢楼上两位,我犯的错误正是如此
快速回复
限100 字节
 
上一个 下一个