1. 程式人生 > >Qt中如何儲存 自畫圖片 為 圖片檔案

Qt中如何儲存 自畫圖片 為 圖片檔案

先建一個QImage/QPixmap之類的圖片物件,而後在其上邊進行繪製,最後將這個圖片物件儲存為檔案。

方式1:(直接使用圖片類的save()函式)

             QPixmap pix(40,40);

             QPainter p(&pix);

             p.drawText(0,10,"Hello,World");

             p.end();

             pix.save("a.png");

方式2:(建立檔案,向裡邊寫圖片資料)

           QImage iim(500,1900,QImage::Format_RGB32);

           QPainter painter(&iim);

           painter.setFont(QFont("Times New Roman", 122));

           painter.drawText(100,300,"Hello,World");

           QFile file("acm.PNG");

           if (!file.open(QIODevice::ReadWrite))

           {

                  return;

           }

          QByteArray ba;

          QBuffer buffer(&ba);

          buffer.open(QIODevice::WriteOnly);

          iim.save(&buffer, "PNG");

          file.write(ba);

---------------------------------------------------------------------------------------------------------------------------

注意以下幾點:

1:檔案的儲存路徑有多種形式:

     ①:如果直接寫成 pix.save("a.png"); 或者QFile file("a.PNG"); 則a.png這個檔案是建立在和該段程式碼所在cpp檔案同目錄下。

     ②:如果寫成pix.save("./debug/a.png")或者QFile file("./debug/a.PNG"); 則a.png這個檔案是建立在和程式碼所在cpp檔案同目錄下的debug資料夾下。

     ③:如果寫成pix.save("C:/a.png");或者QFile file("C:/a.png"); 則該檔案是建立在C盤根目錄下。

     亦即:此時建立路徑既可以用相對路徑,也可以用絕對路徑。

2:群中原先有人說:用第一種方法時:如果改成QImage則沒效果。 實際上是有效果的,問題出在字型的大小上,當用QImage和QPixmap時:兩種格式的圖片中字型大小是不一樣的,前者差不多比後者要小10倍,所以在用QImage時要讓字型的size大一點!

3:對於QFile,  如果寫成 QFile file("./dou.jpg");  如果實際dou資料夾下沒有名為dou.jpg的檔案,則在執行到這一句時:系統會在該目錄下建立名為dou.jpg的檔案!

相關推薦

Qt如何儲存 圖片 圖片檔案

先建一個QImage/QPixmap之類的圖片物件,而後在其上邊進行繪製,最後將這個圖片物件儲存為檔案。 方式1:(直接使用圖片類的save()函式)              QPixmap pix(40,40);              QPainter p(&am

Qt開啟,儲存,另存圖片

Qt開啟一張圖片並顯示在QLabel控制元件中: QString filename=QFileDialog::getOpenFileName(this,tr("選擇影象"),"",tr("I

Qt設定widget背景顏色背景圖片的注意事項

在Qt中設定widget背景顏色或者圖片方法很多種:重寫paintEvent() , 調色盤QPalette , 樣式表setStyleSheet等等。       但是各種方法都有其注意事項,如果不注意則很容易陷入麻煩中。[喝小酒的網摘]http://blog.const.net.cn/a/8333.

Qt QLabel 定義文字的顏色狀態,設定三種狀態(類似於Qcheckbutton裡面的checked unchecked)

1  自定義設定Qlabel文字顏色狀態。 別的類可以進行類推 #ifndef QCOMPLEXLABEL_H #define QCOMPLEXLABEL_H #include <QObject> #include <QWidget> #inclu

如何在Qt使用定義資料型別

這裡我們使用下面這個struct來做說明(這裡不管是struct還是class都一樣): struct Player {     int number; QString firstName;     QString lastN

Qt純C++專案釋出dll的方法(超詳細步驟)

目錄 一般建立方法 匯出普通函式的方法&呼叫方法 匯出類及其成員函式的方法&呼叫方法 眾所周知,我們可以將C++專案中的類以及函式匯出,形成 .dll 檔案,以供其他程式使用,下面將說明Qt環境下的使用方法。 首先建立共享庫,步驟如下:

Java 往TreeSet集合儲存定義物件學生,按照學生的年齡進行排序。

Set:無序,不可以重複元素。|--HashSet:資料結構是雜湊表。執行緒是非同步的。保證元素唯一性的原理:判斷元素的hashCode值是否相同。如果相同,還會繼續判斷元素的equals方法,是否為true。|--TreeSet:可以對Set集合中的元素進行排序。底層資料

ffmpeg 壓縮攝像頭採集的圖片*.H264檔案

主要用opencv開啟攝像頭,採集到資料後,傳輸給ffmpeg ,壓縮為h264資料,h264的檔案可以直接拖到vcl播放器播放 MyEncoder.h #pragma once extern "C" { #include <libavcodec/av

Qt無處不在的d指標何方神聖

在研究QCoreApplication類的程式碼時,無意間弄明白了“d_func()”和“d指標”的來源:class Q_CORE_EXPORT QCoreApplication #ifndef QT_NO_QOBJECT : public QObject #endi

Qt新增定義Slot函式的方法(VS+Qt

剛開始學習QT在網上找的資料基本都是使用QT Create進行開發的。VS下開發的學習資料感覺很少很難找的到。視訊教程也基本沒看到過貌似。 因為我們研發中心是使用MFC進行開發開發工具是VS2010 .使用QT開發的話基本我們不會再使用QT Create了。所以把自己的

u-boot 增加定義命令hjlcmd2------(新增檔案來定義)

1,在 "[email protected]:/home/hjl/Downloads/uboot/common#" 目錄中新增檔案 cmd_hjl.c ,加上標頭檔案     #include <common.h>    &nbs

深度學習【13】tensorflow儲存graph和引數pb檔案

from tensorflow.python.framework.graph_util import convert_variables_to_constants graph = convert_v

將table選擇的資料匯出Execl檔案 JavaScript

<html>    <head>        <title>將table中選擇的資料匯出為Execl檔案 JavaScript</title>        <script language="javascript">...            

Android Studio如何定義Android BuildConfig配置檔案

一個project會有多個app,不同module中都要配置compileSdkVersion、buildToolsVersion等變數值,這時候每個app中的compile工程如果不能統一,在以後升級裡會很麻煩,所以我們要把這些公共的配置項稱為共享變數。 步驟

在map儲存struct,及map的檔案輸入輸出

用函式的方法實現: 從map輸出到檔案,map的value是struct #include<map> #include<iostream> #include<string> #include<fstream> using

QT新增.lib,.dll還有.h檔案

因為我在工作的過程中,使用的是第三方提供的庫,但是如何將這些庫新增到QT的工程中,是個問題,讓我惱火了很久,怎麼弄都是錯的。 下面,我會對這個問題,進行敘述,希望其他人第一次遇到這種問題的時候,可以輕易的解決。 一.新增第三方的標頭檔案 這個問題再簡單不過了,不

XPath在QT的使用(QXmlQuery讀取XML檔案

  最近一段時間和Xml檔案算是幹上了,先後用了QXmlStream、Dom、Dhtmlxtree、DhtmlXform方式讀寫Xml檔案。昨天接到任務讓用Xpath方式實現Xml讀取。經過了解在QT中有QxmlQuery類用來實現XPath,接下來就說說這個東東! 1.

QT使用tinyxml庫來讀取XML檔案失敗的經歷

增加了一個配置項,XML節點名稱用的數字開頭的,如<11aa>0</11aa> 結果在儲存的時候能成功,但是讀取的時候一直load xml failed。 將其修改成<aa11>0</aa11>之後就好了 特此記錄!

C#實戰小技巧(八):將剪下板的內容儲存圖片

進行C#開發時,可以將複製到剪下板中的內容轉為HTML檔案,再將HTML頁面轉為圖片進行儲存,示例效果如下。 被複制的Excel表格: 生成的圖片: 實現上述功能的主要程式碼如下,能夠將從Word、Excel、網頁等地方複製的內容匯出,並儲存為圖片。 程式碼:

MFC儲存點陣圖時,圖片全黑的解決辦法

        需要建立相容點陣圖,建立相容DC,然後需要將點陣圖選入DC中,再將螢幕DC的影象拷貝到建立的相容記憶體DC中。 ······ CRect rect1; GetClientRect(&rect1);