Qt对jpg图片进行混沌处理

zhangshufan8 2016-04-30 10:30:45
想用Qt对图片进行处理,使用混沌算法,对bmp和png两种格式可以正常使用(即可以加密和正常恢复),但在对jpg格式的图片进行加密处理后却无法正常恢复原图,求各位大神帮帮忙。
加密代码如下

QString fileName = QFileDialog::getOpenFileName(this, "打开文件", "", "");
if (fileName.isEmpty())
return;

QImage image(fileName);

int chaos;
double a;
double x;

double keys[][2] = {{4, 0.6}, {3.999, 0.8}, {3.7, 0.7}, {3.888, 0.6}};
for (int kNum = 0; kNum < 4; ++kNum)
{
a = keys[kNum][0];
x = keys[kNum][1];
for (int c = 0; c < 1000; ++c)
x = a*x*(1-x);

for (int j = 0; j < image.height(); ++j)
{
for (int i = 0; i < image.width(); ++i)
{
chaos = 0;
for (int c = 0; c < 8; ++c)
{
x = a*x*(1-x);
if (x >= a/6)
chaos = ((chaos << 1) | 1);
else
chaos = ((chaos << 1) | 0);
}
QColor color(image.pixel(i, j));
color.setRed(color.red() ^ chaos);
color.setGreen(color.green() ^ chaos);
color.setBlue(color.blue() ^ chaos);
image.setPixel(i, j, color.rgb());
}
}
}

QString saveName = QFileDialog::getSaveFileName(this, "保存文件", "", "");
if (saveName.isEmpty())
return;
image.save(saveName, fileName.section('.', -1).toStdString().c_str(), 100);
...全文
390 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kh_12 2017-03-31
  • 打赏
  • 举报
回复
我也遇到了同样的问题,用Qt对图像模糊处理的时候,也是jpg 的就不行,请问楼主后来解决这个问题了吗
zhangshufan8 2016-05-03
  • 打赏
  • 举报
回复
之前有考虑过这个问题,但一直找不到相关的资料,不知道怎样对QImage进行设置。可以给些提示吗?大神
foruok 2016-05-03
  • 打赏
  • 举报
回复
QImage操作图像是按ARGB之类的方式操作的,保存成jpg时根据jpg编码做了压缩,可以考虑是否问题出在这里。

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧