欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    相冊(-album)是預裝的一款集圖片查看、管理功能于一體的圖片管理工具,有著外觀時尚、性能流暢的特點。目前已支持50余種圖片格式的導入和展示,基本上能滿足絕大多數用戶的日常圖片的使用場景。部分格式列舉如下:

    BMP ICO JPG JPE JPS JPEG JNG KOALA KOA LBM MNG PBM PNM PBMRAW PCD PCX PGM PGMRAW PNG PPM PPMRAW RAS TGA TARGA TIFF TIF WBMP PSD CUT XBM XPM DDS GIF FAX G3 SGI EXR J2C JPC PCT PIC PICT RAW WEBP JXR MNG SVG ICNS MRW DNG RAF CR2 MEF ORF NEF PEF PXM

    為提升用戶的使用體驗,解決不同格式的圖片具備不同編碼方式的問題,基于Qt開發的相冊應用采用了和相結合的方式對圖片進行了統一的解碼、轉換和渲染繪制。

    接下來,本文將從技術實現角度,介紹相冊應用在加載圖片文件后的轉換和處理過程。

    1.轉換過程

    是一款免費、開源的圖像處理庫,相冊應用通過其接口加載圖片后得到的數據結構為。但是作為基于Qt開發而來的相冊應用使用的是來保存圖像數據,所以無法直接通過Qt進行繪制。因此,相冊應用需要將轉換成。

    其轉換過程如下:

    1.通過pe獲取圖片的真實格式;

    2.獲取的像素寬、高和深度;

    3.根據的像素寬、高和深度值創建一個相同像素、深度的空對象;

    4.將原始數據完整拷貝給對象,字節數與掃描線字節數對應。

    需要說明的是, 圖像深度是指存儲每個像素所用的位數,用以度量圖像的色彩分辨率和表征單個像素點的色彩詳細度。圖像深度值越高,占用的存儲空間就越大,能表達的顏色數目就越多。但是一般而言顏色代碼轉換表,由于設備和人眼分辨率的限制,不一定要追求特別深的圖像深度。

    2.圖像深度處理

    在相冊應用中,對于圖像深度做了一些特殊的處理,比如:

    1.由于Qt暫不支持4位、48位以及48位以上的圖像深度,所以需要采用傳統的位數轉換方法將4位的深度轉換成8位輸出:

    $$

    P=P1*2^n/2^k

    $$

    其中P為轉換后的像素值,P1為轉換前的像素值,n為原圖像深度值,k為待轉換的深度值。

    一般而言,對于48位及以上高深度值的圖像,圖像源文件較大,加載時內存占用更多,暫不在處理范圍內。若想處理高位圖像,可采用位數轉換公式轉換到低位,但會丟失圖像色彩精度,效果受到一定影響。

    圖像深度對應Qt格式表如下:

    表1 圖像深度與對應轉換格式表

    深度對應轉換格式備注

    1

    位圖模式

    4

    Qt不支持4位,轉換成8位

    8

    8位

    16

    /

    需要區分和

    24

    RGB32

    32

    帶alpha通道的RGB24

    2.當圖像深度為16時,需要區分和兩種色彩模式(注:RGB是工業界的一種顏色標準顏色代碼轉換表,代表紅、綠、藍三個通道的顏色)。區別在于的每個像素用16比特位表示占2個字節,RGB分量都使用5位(最高位不用);而的每個像素用16比特位表示占2個字節,RGB分量分別使用5位、6位、5位。它們的對比如圖1所示。

    圖1 與對比

    3.編碼實現

    根據上述的轉換流程,在編碼實現時既可按照規則進行內存拷貝,也可使用提供的函數來做轉換實現,通過傳入已經初始化完畢的對象的引用、原數據和圖像深度,即可得到轉換后的最終數據。

    部分代碼如下:

    int width ?= static_cast<int>(FreeImage_GetWidth(dib)); //像素寬度 ? ?
    int height = static_cast<int>(FreeImage_GetHeight(dib));//像素高度 ? ?
    int depth = static_cast<int>(FreeImage_GetBPP(dib)); //深度值 ? ?
    switch (depth) { ? ? ?
    ? ...
    ? case 8: { ? ? ? ?
    ? ? QImage result(width, height, QImage::Format_Indexed8);//創建QImage對象 ? ?
    ? ? FreeImage_ConvertToRawBits(result.scanLine(0), dib, result.bytesPerLine(), 8, 0, 0, 0, true); ?//執行轉換 ?
    ? } ? ? ?
    ? ?case 16: {
    ? ? ? ?if ( // 5-5-5
    ? ? ? ? ? (FreeImage_GetRedMask(dib) ? == FI16_555_RED_MASK) &&
    ? ? ? ? ? (FreeImage_GetGreenMask(dib) == FI16_555_GREEN_MASK) &&
    ? ? ? ? ? (FreeImage_GetBlueMask(dib) ?== FI16_555_BLUE_MASK)) {
    ? ? ? ? ? ?QImage result(width, height, QImage::Format_RGB555);
    ? ? ? ? ? ?FreeImage_ConvertToRawBits(
    ? ? ? ? ? ? ? ?result.scanLine(0), dib, result.bytesPerLine(), 16,
    ? ? ? ? ? ? ? ?FI16_555_RED_MASK, FI16_555_GREEN_MASK, FI16_555_BLUE_MASK,
    ? ? ? ? ? ? ? ?true); ?//執行轉換
    ? ? ? } else { // 5-6-5
    ? ? ? ? ? ?QImage result(width, height, QImage::Format_RGB16);
    ? ? ? ? ? ?FreeImage_ConvertToRawBits(
    ? ? ? ? ? ? ? ?result.scanLine(0), dib, result.bytesPerLine(), 16,
    ? ? ? ? ? ? ? ?FI16_565_RED_MASK, FI16_565_GREEN_MASK, FI16_565_BLUE_MASK,
    ? ? ? ? ? ? ? ?true); //執行轉換
    ? ? ? }
    ? }
    ? ...
    }

    如果想轉,獲取的圖像寬高和深度后調用將轉換成。

    以上是針對轉換成的方法介紹。更多圖像編解碼信息、數字圖像處理方法可查閱《數字圖像處理》一書或參考各編碼標準。往期精選| in the past你的虎年專題壁紙來了!深度操作系統20.4發布!

    開源社區中心正式成立!

    你好,!分享那些可能被你忽略的軟件陪我走過的路星火行動啟動!

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有