qt 将图片输出二进制
来源:互联网 发布:交通数据开放平台 编辑:程序博客网 时间:2024/05/16 19:15
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qstring.h"
#include "qimage"
#include <qfiledialog.h>
#include <qmessagebox.h>
#include <QDataStream>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QString filename,filenameout;
int Image_Width=ui->label->width();
int Image_Height=ui->label->height();
QImage *image ;
image=new QImage(Image_Width,Image_Height,QImage::Format_RGB32);//设置图片大小和图片类型 //RGB32位
filename=QFileDialog::getOpenFileName(this,QString::fromLocal8Bit("选择图像"),"",tr("Images (*.png *.bmp *.jpg *.tif *.GIF )"));
if(!filename.isEmpty())
{
if(image->load(filename))//读取图像
{
ui->label->setPixmap(QPixmap::fromImage(*image));
}
else
{
QMessageBox::information(this,QString::fromLocal8Bit("打开图像失败"),QString::fromLocal8Bit("打开图像失败!"));
//delete image;
return;
}
}
else
{
return;
}
int width=image->width();//图像宽
int height=image->height();//图像高
int bytePerLine=(width*24+31)/8;//图像每行字节对齐
unsigned char *data=image->bits();
char unsigned *graydata;
float *red;
graydata=new unsigned char[bytePerLine*height];//存储处理后的数据
red = new float[width*height];//存储处理后的数据
unsigned char r,g,b;
for (int i=0;i<height;i++)
{
for (int j=0;j<width;j++)
{
r = *(data+2);
g = *(data+1);
b = *data;
graydata[i*bytePerLine+j*3] =(r*30+g*59+b*11)/100;
graydata[i*bytePerLine+j*3+1]=(r*30+g*59+b*11)/100;
graydata[i*bytePerLine+j*3+2]=(r*30+g*59+b*11)/100;
red[i*width+j]=1.0*(r*30+g*59+b*11)/100.0;
data+=4;
}
}
filenameout=filename;
filenameout.append(".dat");
QMessageBox::information(this,filename,filenameout);
//filenameout=QFileDialog::getOpenFileName(this,QString::fromLocal8Bit("选择图像"),"",tr("bin (*.bin )"));
QFile file(filenameout);
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
for (int i=0;i<height;i++)
{
for (int j=0;j<width;j++)
{
// float b = red[i*width+j] ;
//file.write(&red[i*width+j], sizeof(float));
//file.write((char*)&b, sizeof(b));
out<<red[i*width+j];
}}
}
阅读全文
0 0
- qt 将图片输出二进制
- jsp页面将二进制图片流转为图片输出
- 输出图片(二进制)
- Qt下将图片,文字等输出为PDF
- Qt下将文件输出为图片文件
- 图片以二进制流输出
- jsp网页输出二进制图片
- SpringMVC系列-输出二进制图片
- Java 将图片转二进制再将二进制转成图片
- Java 将图片转二进制再将二进制转成图片
- Java 将图片转二进制再将二进制转成图片
- Java 将图片转二进制再将二进制转成图片
- Java 将图片转二进制再将二进制转成图片
- 将图片转换成二进制
- 将十进制转换成二进制输出
- 将数据以二进制形式输出
- php将文件转换成二进制输出
- 将整数以二进制格式输出
- maven实现springboot-mybatis框架(2)
- 深入分析java web javac编译原理(其一)
- <context:component-scan base-package="com.a" /> 与<context:annotation-config />
- 使用spring-boot-starter-actuator http://localhost:8080/info无法获取到相应信息
- Java并发学习(六)-深入分析CAS操作
- qt 将图片输出二进制
- hibernate_day03_13_多对多操作(维护第三张表)
- Centos Apache服务安装与配置
- 三极管+电容 实现的心形灯电路
- Linux进程间通信——管道 pipe 详解
- BZOJ 1601 [Usaco2008 Oct]灌水(最小生成树)
- springboot中ehcache的使用
- yarn —— Nodejs包新管理工具
- 1.15使用装饰器改变函数行为