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); }