picutil.h–图像生成
#ifndef PICUTIL_H
#define PICUTIL_H
#include <QPainter>
#include <QFont>
#include <QBrush>
#include <QColor>
#include <QPaintDevice>
#include <QPaintEngine>
#include <QPixmap>
#include <QPainterPath>
#include <QDebug>
#include <QLCDNumber>
#include <QRect>
#include <QRectF>
#include <QPoint>
#include <QPointF>
#include <QLabel>
#include <QTimer>
#include <QFile>
#include "filter.h"
namespace picShtUtil {
class generalImage
{
public:
generalImage() {}
QList<QStringList> data;
QList<QStringList> colorList;//画板
int max_radio_real=0;//高温权重
int min_radio_real=0;
int max_point_x;//高温32*32坐标点
int max_point_y;
int min_point_x;//低温32*32坐标点
int min_point_y;
float max;//高温上传值
float min;
int pow=256;//色阶权重
const long _RADIUS = 10;
//生成图像
QImage becomeImage(float maxT,float minT,QStringList dataList){
//第一步:画板初始化
ini();
//第二步:数据处理
getData(maxT,minT,dataList);//数据处理
//第三步:成图
// 创建一个 QImage 对象
QImage image(32, 32, QImage::Format_RGB32);
QRgb value;
// 改变指定区域的像素点的值
for(int i=0;i<32;i++){
for(int j=0;j<32;j++){
QString realData=data.at(i).at(j);
int ratio=realData.toInt();
if(ratio==max_radio_real){//高温点--黑
uint red = 0;
uint green = 0;
uint blue = 0;
value = qRgb(red, green, blue);
image.setPixel(i, j, value);
//获取点的位置
max_point_x=i;
max_point_y=j;
}else if(ratio==min_radio_real){//低温点--白
uint red = 255;
uint green = 255;
uint blue = 255;
value = qRgb(red, green, blue);
image.setPixel(i, j, value);
//获取点的位置
min_point_x=i;
min_point_y=j;
}
else{
QStringList rgb=colorList.at(ratio);
QString redTemp =rgb.at(0);
QString greenTemp=rgb.at(1);
QString blueTemp =rgb.at(2);
uint red = redTemp.toInt();
uint green = greenTemp.toInt();
uint blue = blueTemp.toInt();
value = qRgb(red, green, blue);
image.setPixel(i, j, value); // 设置每个像素点的值
}
}
}
image=image.scaled(320,320, Qt::KeepAspectRatio);//放大10倍
//高斯模糊处理
QImage image_deal;
image_deal=image.convertToFormat(QImage::Format_RGB888);
static filter::pair_t pair[] =
{
{ filter::Gauss, filter::Blur1D },
{ filter::Gauss, filter::Blur2D }
};
filter::bitmap_t bmp;
bmp.set((filter::bitmap_t::pixel_t*)image_deal.bits(),
image_deal.width(), image_deal.height());
filter::Filter(pair[0], bmp, _RADIUS);
//图像90度顺时针旋转+绘制文字
QMatrix leftmatrix;
leftmatrix.rotate(90);
image_deal=image_deal.transformed(leftmatrix);//旋转90度
QPainter painter1(&image_deal);
//在图像上标注点
//高温
int change_point_x_max=320-max_point_y*10;
int change_point_y_max=max_point_x*10;
painter1.drawText(QPoint(change_point_x_max,change_point_y_max),QString::number(max));
//低温
int change_point_x_min=320-min_point_y*10;
int change_point_y_min=min_point_x*10;
painter1.drawText(QPoint(change_point_x_min,change_point_y_min),QString::number(min));
return image_deal;
}
//初始化
void ini(){
//根据线性渐变色条得到颜色表
QLinearGradient linear=QLinearGradient(QPoint(0,0),QPoint(pow-1,0));
linear.setColorAt(0, Qt::blue);
linear.setColorAt(0.3, Qt::blue);
linear.setColorAt(0.4, Qt::green);
linear.setColorAt(0.5, Qt::yellow);
linear.setColorAt(1, Qt::red);
//把渐变色绘制到Img方便取颜色
QImage img(pow,1,QImage::Format_ARGB32);
QPainter painter(&img);
painter.fillRect(img.rect(),linear);
QStringList temp;
for(quint32 i=0;i<pow;i++){
QColor color=img.pixel(i,0);
temp << QString::number(color.red()) << QString::number(color.green())<< QString::number(color.blue());
colorList <<temp;
temp.clear();
}
}
//数据处理
void getData(float maxT,float minT,QStringList dataList){
data.clear();
max=maxT;
min=minT;
QStringList temp;
for(int i=0;i<dataList.count();i++){
QString numTemp=dataList.at(i);
float num=numTemp.toFloat();
int radio=(num-min)/(max-min)*(pow-1);
temp << QString::number(radio);
if(((i+1)%32==0)&&(i!=0)){
data <<temp;
temp.clear();
}
if(num==max){
max_radio_real=radio;
}
if(num==min){
min_radio_real=radio;
}
}
}
};
}
#endif // PICUTIL_H
filter.h–高斯工具类
//
// Image Filter
//
// Author: darkcat
// Blog: http://darkc.at
// E-Mail: memleak@darkc.at
// Version: 20130810
//
#ifndef __filter_h__
#define __filter_h__
#include <math.h>
#include <new>
//
#ifndef FILTER_ALLOC
#define FILTER_ALLOC filter::alloc_t
#endif/*FILTER_ALLOC*/
//
namespace filter
{
struct alloc_t
{
static void* alloc(unsigned int size) { return ::malloc(size); }
static void free (void* ptr) { ::free(ptr); }
};
template <typename TypeT, typename AllocT = FILTER_ALLOC>
class auto_t
{
protected:
TypeT* _point;
long _size;
public:
auto_t() : _point(0), _size(0) {}
auto_t(long size) :
_point(::new (AllocT::alloc(sizeof(TypeT) * size)) TypeT[size])
, _size(size) {}
virtual ~auto_t()
{
if (_point)
{
for (long i = 0; i < _size; ++i) _point[i].~TypeT();
AllocT::free(_point);
}
}
void set(long size)
{
this->~auto_t();
::new (this) auto_t(size);
}
long size() { return _size; }
TypeT& operator[](long num) { return _point[num]; }
};
//
class bitmap_t
{
public:
typedef unsigned char channel_t;
struct pixel_t
{
channel_t r, g, b;
pixel_t() : r(0), g(0), b(0) {}
};
struct buff_t
{
double r, g, b;
buff_t() : r(0.0), g(0.0), b(0.0) {}
};
protected:
pixel_t* _bits;
long _w, _h, _size;
public:
bitmap_t() : _bits(0), _w(0), _h(0), _size(0) {}
void set(pixel_t* bits, long w, long h)
{
_bits = bits;
_w = w;
_h = h;
_size = 0;
}
long w() { return _w; }
long h() { return _h; }
long size()
{
if (_size) return _size;
else return _size = _w * _h;
}
pixel_t& operator[](long num) { return _bits[num]; }
};
class buffer_t : public auto_t<bitmap_t::buff_t>
{
public:
buffer_t() {}
buffer_t(bitmap_t& bitmap) :
auto_t<bitmap_t::buff_t>(bitmap.size()) {}
void set(bitmap_t& bitmap)
{ ::new (this) buffer_t(bitmap); }
};
class filter_t : public auto_t<double>
{
protected:
long _radius;
public:
filter_t() {}
filter_t(long radius, long size) :
auto_t<double>(size), _radius(radius) {}
void set(long radius, long size)
{ ::new (this) filter_t(radius, size); }
long radius() { return _radius; }
};
static const double PI = 3.141592653589793;
//
template <typename T1, typename T2>
T1 Clamp(T2 n) { return (T1)(n > (T1)~0 ? (T1)~0 : n); }
template <typename T>
T Diamet(T r) { return ((r * 2) + 1); }
template <typename T>
bool Equal(T n1, T n2) { return (fabs(n1 - n2) < (T)0.000001); }
template <typename T>
T Edge(T i, T x, T w)
{
T i_k = x + i;
if (i_k < 0) i_k = -x;
else if (i_k >= w) i_k = w - 1 - x;
else i_k = i;
return i_k;
}
void Normalization(filter_t& kernel)
{
double sum = 0.0;
for(int n = 0; n < kernel.size(); ++n)
sum += kernel[n];
if (Equal(sum, 1.0)) return;
for(int n = 0; n < kernel.size(); ++n)
kernel[n] = kernel[n] / sum;
}
//
void Blur1D(bitmap_t& bitmap, filter_t& kernel)
{
Normalization(kernel);
buffer_t buff(bitmap);
for(long inx = 0, y = 0; y < bitmap.h(); ++y)
{
for(long x = 0; x < bitmap.w(); ++x, ++inx)
{
for(long n = 0, i = -kernel.radius(); i <= kernel.radius(); ++i, ++n)
{
long i_k = Edge(i, x, bitmap.w());
long inx_k = inx + i_k;
buff[inx].r += bitmap[inx_k].r * kernel[n];
buff[inx].g += bitmap[inx_k].g * kernel[n];
buff[inx].b += bitmap[inx_k].b * kernel[n];
}
}
}
for(long inx = 0, x = 0; x < bitmap.w(); ++x)
{
for(long y = 0; y < bitmap.h(); ++y)
{
inx = y * bitmap.w() + x;
double r = 0.0, g = 0.0, b = 0.0;
for(long n = 0, i = -kernel.radius(); i <= kernel.radius(); ++i, ++n)
{
long i_k = Edge(i, y, bitmap.h());
long inx_k = inx + i_k * bitmap.w();
r += buff[inx_k].r * kernel[n];
g += buff[inx_k].g * kernel[n];
b += buff[inx_k].b * kernel[n];
}
bitmap[inx].r = Clamp<bitmap_t::channel_t>(r);
bitmap[inx].g = Clamp<bitmap_t::channel_t>(g);
bitmap[inx].b = Clamp<bitmap_t::channel_t>(b);
}
}
}
void Blur2D(bitmap_t& bitmap, filter_t& kernel)
{
filter_t matrix(kernel.radius(), kernel.size() * kernel.size());
for(long n = 0, i = 0; i < kernel.size(); ++i)
for(long j = 0; j < kernel.size(); ++j, ++n)
matrix[n] = kernel[i] * kernel[j];
Normalization(matrix);
for(long inx = 0, y = 0; y < bitmap.h(); ++y)
{
for(long x = 0; x < bitmap.w(); ++x, ++inx)
{
double r = 0.0, g = 0.0, b = 0.0;
for (long n = 0, j = -matrix.radius(); j <= matrix.radius(); ++j)
{
long j_k = Edge(j, y, bitmap.h());
for (long i = -matrix.radius(); i <= matrix.radius(); ++i, ++n)
{
long i_k = Edge(i, x, bitmap.w());
long inx_k = inx + j_k * bitmap.w() + i_k;
r += bitmap[inx_k].r * matrix[n];
g += bitmap[inx_k].g * matrix[n];
b += bitmap[inx_k].b * matrix[n];
}
}
bitmap[inx].r = Clamp<bitmap_t::channel_t>(r);
bitmap[inx].g = Clamp<bitmap_t::channel_t>(g);
bitmap[inx].b = Clamp<bitmap_t::channel_t>(b);
}
}
}
//
void Average(filter_t& kernel, long radius)
{
kernel.set(radius, Diamet(radius));
double average = 1.0 / (double)kernel.size();
for(long n = 0; n < kernel.size(); ++n)
kernel[n] = average;
}
void Linear(filter_t& kernel, long radius)
{
kernel.set(radius, Diamet(radius));
double b = 2.0 / (double)kernel.size();
double a = -(b / radius);
for(long n = 0, i = -kernel.radius(); i <= kernel.radius(); ++i, ++n)
kernel[n] = a * abs(i) + b;
}
void Gauss(filter_t& kernel, long radius)
{
kernel.set(radius, Diamet(radius));
static const double SQRT2PI = sqrt(2.0 * PI);
double sigma = (double)radius / 3.0;
double sigma2 = 2.0 * sigma * sigma;
double sigmap = sigma * SQRT2PI;
for(long n = 0, i = -kernel.radius(); i <= kernel.radius(); ++i, ++n)
kernel[n] = exp(-(double)(i * i) / sigma2) / sigmap;
}
//
typedef void (*mark_t)(filter_t&, long);
typedef void (*blur_t)(bitmap_t&, filter_t&);
bool Filter(mark_t mark, blur_t blur, bitmap_t& bitmap, long radius)
{
if (radius < 1) return false;
filter_t kernel;
mark(kernel, radius);
blur(bitmap, kernel);
return true;
}
struct pair_t
{
mark_t mark;
blur_t blur;
};
bool Filter(pair_t& pair, bitmap_t& bitmap, long radius)
{
return Filter(pair.mark, pair.blur, bitmap, radius);
}
}
//
#endif/*__filter_h__*/
使用
MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QWidget>
#include <QPainter>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
protected:
void paintEvent(QPaintEvent *event);
};
#endif // MAINWINDOW_H
MainWindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "picutil.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
//系统自动刷新
void MainWindow::paintEvent(QPaintEvent *)
{
//测试数据
float max=47.2;
float min=7;
QStringList temp;
temp<<"22.2"<<"22.9"<<"22.4"<<"23.5"<<"22.6"<<"22.7"<<"22.7"<<"24.1"<<"24.4"<<"23.4"<<"24.3"<<"23.7"<<"24.7"<<"27.3"<<"27.3"<<"26.2"<<"27.4";
temp <<"28.3"<<"28.3"<<"26.7"<<"28"<<"26"<<"24.2"<<"25.3"<<"24.8"<<"25.7"<<"24.4"<<"23.5"<<"23.2"<<"22.6"<<"23.3"<<"22.2"<<"22.3"<<"24.8"<<"22.2";
temp<<"22.2"<<"20.9"<<"24.6"<<"24.5"<<"24.6"<<"24.6"<<"21.7"<<"24"<<"25.9"<<"26.2"<<"29.6"<<"29.5"<<"27.1"<<"28.1"<<"29.2"<<"28.7"<<"27.9"<<"27.4";
temp<<"24.9"<<"25.6"<<"24.4"<<"22.9"<<"22.5"<<"21.5"<<"24.4"<<"24.2"<<"21.9"<<"23.1"<<"19.9"<<"21.2"<<"21.3"<<"24.7"<<"23.1"<<"22.9"<<"22.2"<<"22.5";
temp<<"23.1"<<"25.1"<<"26.1"<<"25.4"<<"28.7"<<"26.4"<<"29.8"<<"30.2"<<"30"<<"28.9"<<"29"<<"28.7"<<"29.2"<<"29.6"<<"27.8"<<"28.8"<<"26.4"<<"25";
temp<<"25.6"<<"22.5"<<"23.7"<<"23.1"<<"23.5"<<"23.9"<<"22.7"<<"22.7"<<"23.2"<<"23.1"<<"22.7"<<"19"<<"22.8"<<"23.6"<<"23.6"<<"25.2"<<"24.8"<<"28.4";
temp<<"29.5"<<"31.3"<<"29.8"<<"31.3"<<"28.6"<<"30.7"<<"31.8"<<"32.2"<<"29.7"<<"30.7"<<"29.8"<<"27.7"<<"28.7"<<"26.7"<<"25.6"<<"26.1"<<"23"<<"25.4";
temp<<"23.9"<<"24.1"<<"24"<<"24.9"<<"24.6"<<"22.2"<<"21.4"<<"19.9"<<"23.2"<<"23.8"<<"23.3"<<"25.3"<<"27.9"<<"30.6"<<"32.4"<<"32.9"<<"33.9"<<"35.7"<<"35.4"<<"33.1"<<"32.2"<<"35"<<"34.2"<<"32.8"<<"30.7"<<"29.6"<<"28.3"<<"28.3"<<"27"<<"23.5"<<"23.5"<<"22"<<"23.5"<<"22.4"<<"25.1"<<"22.9"<<"25.3"<<"23.4"<<"22.7"<<"22.4"<<"23.5"<<"23.4"<<"25.6"<<"25.4"<<"27.4"<<"31.2"<<"33.9"<<"35.3"<<"35.1"<<"34.2"<<"35.1"<<"34.6"<<"34.8"<<"35"<<"32.9"<<"30.7"<<"31.8"<<"33.1"<<"29.1"<<"29.2"<<"28"<<"25.1"<<"23.7"<<"23.3"<<"24"<<"22.7"<<"23.5"<<"23.7"<<"23.2"<<"23.1"<<"22.5"<<"24.3"<<"22.9"<<"25.1"<<"24.8"<<"26.7"<<"31.5"<<"33.9"<<"33.8"<<"30.6"<<"34.9"<<"35.2"<<"33.9"<<"35.7"<<"34.8"<<"35.6"<<"34.5"<<"33.8"<<"35.2"<<"34.3"<<"30.4"<<"30.3"<<"28.4"<<"25.4"<<"25.3"<<"23.2"<<"23.3"<<"23.1"<<"23"<<"23.2"<<"22.6"<<"22"<<"23.2"<<"20.7"<<"24.4"<<"25.7"<<"24.3"<<"30.4"<<"32.5"<<"33.8"<<"34.9"<<"33.9"<<"33.1"<<"35"<<"30.6"<<"33.8"<<"35.3"<<"35.4"<<"35.3"<<"34.7"<<"34"<<"35.1"<<"33.2"<<"31.6"<<"29.9"<<"41.2"<<"24.6"<<"24.4"<<"23.6"<<"23.6"<<"24.5"<<"24.8"<<"25.5"<<"24.2"<<"24.2"<<"23.6"<<"22.3"<<"24.9"<<"27"<<"31.8"<<"33.9"<<"33.3"<<"34.1"<<"34.1"<<"34.3"<<"35.1"<<"34.8"<<"34.5"<<"35.9"<<"35.1"<<"34.9"<<"35.4"<<"35.1"<<"35.3"<<"35.1"<<"33.2"<<"30.3"<<"27.8"<<"24.5"<<"22.7"<<"24.7"<<"23.3"<<"23.2"<<"23.1"<<"23.7"<<"25.2"<<"25.5"<<"23.2"<<"24.3"<<"24.3"<<"26.1"<<"31.3"<<"31.8"<<"34.9"<<"34.5"<<"34.1"<<"35.2"<<"34.9"<<"34.8"<<"35.1"<<"34.8"<<"34.8"<<"33.8"<<"33"<<"34.7"<<"32.8"<<"34.6"<<"34"<<"32.5"<<"27.8"<<"25"<<"23.9"<<"22.6"<<"22.3"<<"22.3"<<"23.6"<<"24.8"<<"25.4"<<"27.8"<<"21.7"<<"23.6"<<"24.8"<<"24.6"<<"31.9"<<"33.7"<<"34.6"<<"33.5"<<"29.4"<<"34.2"<<"35.2"<<"35.3"<<"37.6"<<"35.3"<<"34.9"<<"33.3"<<"34.1"<<"35.2"<<"35.4"<<"33.8"<<"34.4"<<"32.3"<<"27.2"<<"25.8"<<"23.2"<<"23.1"<<"23.9"<<"23.6"<<"24.9"<<"23"<<"24.6"<<"27"<<"21.4"<<"22.5"<<"23.2"<<"25.3"<<"26"<<"28.1"<<"32.8"<<"33.9"<<"34.6"<<"33.2"<<"33.8"<<"31.1"<<"31.8"<<"34.7"<<"36.2"<<"34.2"<<"34"<<"32.6"<<"33.8"<<"34.2"<<"35.4"<<"32.3"<<"27.5"<<"25.4"<<"24.8"<<"23.3"<<"23.1"<<"20.6"<<"23.6"<<"23.8"<<"22.3"<<"22.6"<<"23.2"<<"23.3"<<"22.7"<<"24.2"<<"30.6"<<"34.2"<<"33.9"<<"34.5"<<"34.9"<<"35"<<"34.9"<<"34.1"<<"34.6"<<"34.4"<<"35.1"<<"34.9"<<"34.7"<<"33"<<"34.4"<<"33.3"<<"34.2"<<"32.3"<<"27"<<"24"<<"22.8";
temp<<"23.4"<<"23.9"<<"24.7"<<"23.3"<<"24.4"<<"24"<<"22.3"<<"23.5"<<"24.4"<<"24"<<"25.7"<<"31.9"<<"31.8"<<"33.3"<<"34.1"<<"34.2"<<"34.5"<<"34.6"<<"32.8"<<"33.8"<<"34.3"<<"32.4"<<"33.6"<<"33.6"<<"33.5"<<"33.7"<<"33.2"<<"34"<<"33.7"<<"25.6"<<"24.1"<<"23"<<"24.1"<<"24"<<"24"<<"22.8"<<"22.6"<<"24.8"<<"22.5"<<"22"<<"24.2"<<"23.2"<<"23.6"<<"32.9"<<"34.4"<<"33.6"<<"33.7"<<"29.8"<<"34.3"<<"34.5"<<"32.8"<<"36.1"<<"31.5"<<"33.2"<<"33.2"<<"33.4"<<"33.7"<<"35.1"<<"34.5"<<"32.9"<<"32.2"<<"28.4"<<"23.9"<<"22.4"<<"24.2"<<"21.8"<<"23.4"<<"23.6"<<"22.5"<<"22.8"<<"23.9"<<"23"<<"23"<<"25.1"<<"23.6"<<"31.8"<<"35.1"<<"34.7"<<"33.7"<<"34.2"<<"34.3"<<"34.4"<<"30.5"<<"31.1"<<"33.9"<<"34.3"<<"34.3"<<"35.3"<<"33"<<"34.8"<<"33.6"<<"33.8"<<"33.6"<<"31.1"<<"23.4"<<"24.3"<<"24.4"<<"22.9"<<"23.3"<<"23.9"<<"22.4"<<"24.1"<<"22.6"<<"21.5"<<"22.2"<<"24.9"<<"24.9"<<"30.8"<<"33.6"<<"33.4"<<"33.1"<<"33.9"<<"34.6"<<"34.7"<<"33.4"<<"33.5"<<"33.2"<<"33.9"<<"34.2"<<"33.9"<<"32.6"<<"32.8"<<"33"<<"33.3"<<"31.3"<<"29.6"<<"23.5"<<"25.8"<<"22.2"<<"27.3"<<"24.1"<<"23.5"<<"24"<<"22.7"<<"21.4"<<"23.5"<<"23.4"<<"21.6"<<"24.8"<<"29.9"<<"33.8"<<"34.4"<<"34.6"<<"34.6"<<"34.3"<<"34.3"<<"33.3"<<"34.6"<<"33.6"<<"33.3"<<"36.3"<<"35.1"<<"32.4"<<"34.4"<<"33"<<"31"<<"32.8"<<"27.5"<<"24"<<"25.5"<<"24.5"<<"23.8"<<"23.6"<<"24.3"<<"23.3"<<"24.2"<<"23.6"<<"23.3"<<"23.1"<<"24.1"<<"23.7"<<"30.5"<<"34.2"<<"34.2"<<"34.2"<<"33.9"<<"34.3"<<"34.6"<<"32.8"<<"33.9"<<"33.3"<<"33.2"<<"34.5"<<"35.5"<<"34.6"<<"33.9"<<"31.9"<<"33.8"<<"31.1"<<"25.8"<<"24.8"<<"24.7"<<"24"<<"22.2"<<"23.6"<<"22.3"<<"22.3"<<"25.7"<<"23.8"<<"23"<<"22.8"<<"22.2"<<"23.4"<<"29.6"<<"33.2"<<"7"<<"32.8"<<"34.6"<<"32.8"<<"35.3"<<"35"<<"34"<<"33.9"<<"34.9"<<"34.9"<<"34.7"<<"33.3"<<"32.6"<<"32.8"<<"31.8"<<"47.2"<<"7.8"<<"24.2"<<"24.8"<<"24.9"<<"25.8"<<"26.7"<<"22.8"<<"21.8"<<"23.9"<<"23.7"<<"23.7"<<"24.5"<<"24.6"<<"25.8"<<"25.5"<<"32.4"<<"33.6"<<"33.5"<<"34.6"<<"32.9"<<"34.6"<<"33.6"<<"34.8"<<"32.8"<<"35.1"<<"34.2"<<"35.2"<<"34.9"<<"33.2"<<"33.1"<<"29.7"<<"23.1"<<"24.2"<<"23.4"<<"25.5"<<"25.8"<<"28.5"<<"25.9"<<"23.6"<<"23.7"<<"24.3"<<"22.2"<<"23.5"<<"24.3"<<"25.8"<<"25.2"<<"25.4"<<"33.6"<<"33.8"<<"35.1"<<"34.2"<<"33.6"<<"34.2"<<"34.1"<<"34.1"<<"34.1"<<"34.4"<<"35.4"<<"34.6"<<"33"<<"32.4"<<"32.6"<<"26.5"<<"25.1"<<"24.6"<<"24.6"<<"26.1"<<"24.9"<<"25.9"<<"25.1"<<"23.6"<<"22.6"<<"24.2"<<"23.3"<<"24.7"<<"24.5"<<"26.5"<<"24.4"<<"25"<<"29.3"<<"33.4"<<"32.6"<<"35.1"<<"33.3"<<"34.2"<<"34.1"<<"34"<<"36.1"<<"33.3"<<"34.5"<<"34.3"<<"33.8"<<"32.8"<<"30.5"<<"26.1"<<"25.3"<<"24.3"<<"23.9"<<"24.5"<<"24.8"<<"22.4"<<"23.4"<<"21.9"<<"22.9"<<"25.9"<<"24.1"<<"24"<<"22.6"<<"23.2"<<"23.4"<<"23.3"<<"25.2"<<"33.4"<<"33.9"<<"34.9"<<"35.3"<<"35.3"<<"35.1"<<"33.3"<<"35.6"<<"34.8"<<"35.1"<<"34.8"<<"33.3"<<"31.8"<<"31.1"<<"25.3"<<"24.8"<<"24.4"<<"24.2"<<"23.7"<<"21.6"<<"24.2"<<"23.6"<<"22.7"<<"23.6"<<"22.9"<<"23.1"<<"22.6"<<"22"<<"25.9"<<"24.9"<<"22.4"<<"24.3"<<"27.5"<<"33.4"<<"33.7"<<"33"<<"33.6"<<"32.2"<<"34.6"<<"34.3"<<"34.4"<<"34.1"<<"33.5"<<"34.5"<<"31"<<"26.8"<<"23.8"<<"24.1"<<"23.9"<<"23"<<"21.7"<<"24.2"<<"27"<<"23.2"<<"23.1"<<"21.8"<<"23"<<"21.6"<<"23.8"<<"23.7"<<"23.8"<<"24.8"<<"23.6"<<"24.7"<<"27.1"<<"32.8"<<"34.4"<<"33.5"<<"34.4"<<"34.5"<<"36"<<"34.5"<<"34.8"<<"34.5"<<"33.8"<<"33.3"<<"32.8"<<"27.8"<<"23.5"<<"22.9"<<"24.9"<<"24.1"<<"25.9"<<"24"<<"24.3"<<"22.9"<<"24.4"<<"21.9"<<"25"<<"23.8"<<"23.2"<<"22.1"<<"25.7"<<"23.3"<<"24.2"<<"26.8"<<"29.6"<<"32.3"<<"34.3"<<"34.3"<<"34"<<"31.9"<<"33.3"<<"32.8"<<"33.9"<<"34.4"<<"33.8"<<"34"<<"34"<<"28.7"<<"28.3"<<"26.2"<<"24.3"<<"24.1"<<"24.2"<<"24.1"<<"23.6"<<"22.8"<<"22.1"<<"22.3"<<"24.5"<<"25.6"<<"27.4"<<"28.2"<<"27.4"<<"28.7"<<"28.5"<<"29.4"<<"35.7"<<"32.6"<<"33.8"<<"33.7"<<"35.3"<<"34.1"<<"33.8"<<"32.7"<<"34.5"<<"34"<<"33.8"<<"35.1"<<"32"<<"30.7"<<"30.6"<<"29.8"<<"29.2"<<"28.6"<<"26.7"<<"26.7"<<"27.9"<<"24.1"<<"25.8"<<"26.7"<<"28.2"<<"29"<<"29.4"<<"29.6"<<"28.7"<<"29.6"<<"30.2"<<"29.8"<<"32.7"<<"34.2"<<"35.3"<<"34.1"<<"32.4"<<"32.7"<<"34"<<"33.8"<<"33.2"<<"34.2"<<"33.9"<<"32"<<"32.5"<<"31.6"<<"33.1"<<"28.3"<<"29.3"<<"29.7"<<"28.9"<<"26.7"<<"29.4"<<"29.6"<<"29.2"<<"26.9"<<"28.2"<<"29.9"<<"29.9"<<"30.5"<<"30.2"<<"30.8"<<"31.5"<<"30.5"<<"33.7"<<"35.6"<<"34.5"<<"33"<<"34.5"<<"32.9"<<"31.5"<<"33.4"<<"32.2"<<"35.5"<<"32.1"<<"31.3"<<"32"<<"31.2"<<"31.2"<<"30.7"<<"32.4"<<"28.9"<<"28.7"<<"29"<<"28.1"<<"29.6"<<"29"<<"28"<<"29.3"<<"30.3"<<"29.7"<<"31.1"<<"28.2"<<"30.4"<<"31"<<"30.7"<<"30.5"<<"30.2"<<"34"<<"35.1"<<"32.5"<<"31.2"<<"32.6"<<"32.6"<<"31.4"<<"30.4"<<"32.2"<<"31.6"<<"33.9"<<"30.8"<<"30.7"<<"32.7"<<"31.8"<<"31.1"<<"30.7"<<"30"<<"28.4"<<"29.3"<<"28.3"<<"28.9"<<"31.1"<<"30.6"<<"31.1"<<"27.9"<<"30.7"<<"30.6"<<"33.2"<<"32.5"<<"33.7"<<"29.4"<<"30.7"<<"31.1"<<"31.9"<<"32.1"<<"31.1"<<"32.6"<<"30.4"<<"32.3"<<"32.1"<<"30.8"<<"30.8"<<"31.3"<<"32.5"<<"30.7"<<"32"<<"31.6"<<"29"<<"29.4"<<"30.2"<<"30.9";
//生成图像
picShtUtil::generalImage gim;
QImage image= gim.becomeImage(max,min,temp);
QPainter painter1(this);
painter1.drawImage(0, 0,image);
}