#include "widget.h"#include"ui_widget.h"#include#include#include#include
#define IMAG_BIT 3Widget::Widget(QWidget*parent) :
QWidget(parent),
ui(newUi::Widget)
{
ui->setupUi(this);//m_fileName = "radio_but_eq_p.png";
m_fileName = "bg.png";
ui->imageName->setText(m_fileName);//QResource resource;//resource.setFileName(":/main_bg.png");//const uchar* imageData = resource.data();//QImage desImage = QImage(imageData, 800,480,QImage::Format_RGB32);//RGB32//QPixmap pixmag;//pixmag = QPixmap::fromImage(desImage);//ui->oldImage->setPixmap(pixmag);
QPixmap pixmap(":/main_bg.png");
ui->oldImage->setPixmap(pixmap);//QPixmap pixmag;//pixmag.load(m_fileName);//ui->oldImage->setPixmap(pixmag);
connect(ui->start, SIGNAL(clicked(bool)), this, SLOT(saveImageToFile()));
connect(ui->refresh, SIGNAL(clicked(bool)), this, SLOT(refreshImage()));
}
Widget::~Widget()
{deleteui;
}voidWidget::saveImageToFile()
{
QImage image(m_fileName);//QImage image = QImage(800,480,QImage::Format_RGB888);//RGB32//image.load(m_fileName);
int size =image.byteCount();int sizePerLine =image.bytesPerLine();int line = size /sizePerLine;
m_imgWidth=image.width();
m_imgHeight=image.height();
qDebug()<< "size:" <
qDebug()<< "sizePerLine:" <
qDebug()<< "line:" <
qDebug()<< "width:" <
uchar* imgDataNew =image.bits();
FILE*pf = fopen("newfile.png", "wb");if(pf ==NULL)return;
QFile file;
file.open(pf, QIODevice::WriteOnly);//1
for(int i = 0; i < line; i++)
{
uchar* lineData =image.scanLine(i);for(int j = 0; j < sizePerLine; j++)
{
file.write((char*)(lineData + j),1);
}
}
file.close();//QImage desImage = QImage(m_imgWidth,m_imgHeight,QImage::Format_RGB32);//RGB32// //RGB分量值//int b = 0;//int g = 0;//int r = 0;//int a = 0;// //设置像素//for (int i=0;i < m_imgHeight;i++)//{//for (int j=0; j < m_imgWidth * 4;)//{//b = (int)*(imgDataNew + i * m_imgWidth * 4 + j);//g = (int)*(imgDataNew + i * m_imgWidth * 4 + j + 1);//r = (int)*(imgDataNew + i * m_imgWidth * 4 + j + 2);//a = (int)*(imgDataNew + i * m_imgWidth * 4 + j + 3);//desImage.setPixel(j / 4,i,qRgba(r,g,b,a));//j = j + 4;// //desImage.setPixel(j,i,qRgb(r,g,b));//}//}//QPixmap pixmag;//pixmag = QPixmap::fromImage(desImage);//ui->newImage->setPixmap(pixmag);
}voidWidget::refreshImage()
{
QFile file(":/newfile.png");//if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
if (!file.open(QIODevice::ReadOnly))return;
QByteArray array=file.readAll();//file.close();
char* imgDataNew =array.data();
QImage desImage= QImage(m_imgWidth,m_imgHeight,QImage::Format_RGB32); //RGB32//RGB分量值
int b = 0;int g = 0;int r = 0;int a = 0;//设置像素
for (int i=0;i < m_imgHeight;i++)
{for (int j=0; j < m_imgWidth * 4;)
{
b= (int)*(imgDataNew + i * m_imgWidth * 4 +j);
g= (int)*(imgDataNew + i * m_imgWidth * 4 + j + 1);
r= (int)*(imgDataNew + i * m_imgWidth * 4 + j + 2);
a= (int)*(imgDataNew + i * m_imgWidth * 4 + j + 3);
desImage.setPixel(j/ 4,i,qRgba(r,g,b,a));
j= j + 4;//desImage.setPixel(j,i,qRgb(r,g,b));
}
}
QPixmap pixmag;
pixmag=QPixmap::fromImage(desImage);
ui->newImage->setPixmap(pixmag);//QImage desImage ;//if(IMAG_BIT == 3)//desImage = QImage(m_imgWidth,m_imgHeight,QImage::Format_RGB888);//RGB24//else if(IMAG_BIT == 4)//desImage = QImage(m_imgWidth,m_imgHeight,QImage::Format_RGB32);//RGB32// //RGB分量值//char b = 0;//char g = 0;//char r = 0;//char a = 0;// //设置像素//for (int i=0;i < m_imgHeight;i++)//{//for (int j=0; j < m_imgWidth * IMAG_BIT;)//{//b = (int)*(imgDataNew + i * m_imgWidth * IMAG_BIT + j);//g = (int)*(imgDataNew + i * m_imgWidth * IMAG_BIT + j + 1);//r = (int)*(imgDataNew + i * m_imgWidth * IMAG_BIT + j + 2);//if(IMAG_BIT == 4)//{//a = (int)*(imgDataNew + i * m_imgWidth * IMAG_BIT + j + 3);//desImage.setPixel(j / IMAG_BIT,i,qRgba(r,g,b,a));//}//else if(IMAG_BIT == 3)//{//desImage.setPixel(j / IMAG_BIT, i, qRgb(r,g,b));//}//j = j + IMAG_BIT;//}//}//QPixmap pixmag;//pixmag = QPixmap::fromImage(desImage);//ui->newImage->setPixmap(pixmag);
}