女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙開發案例:【圖像加載緩存庫ImageKnife】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-03-23 16:48 ? 次閱讀

ImageKnife

專門為OpenHarmony打造的一款圖像加載緩存庫,致力于更高效、更輕便、更簡單。

簡介

OpenHarmony的自研版本:

  • 支持內存緩存,使用LRUCache算法,對圖片數據進行內存緩存。
  • 支持磁盤緩存,對于下載圖片會保存一份至磁盤當中。
  • 支持進行圖片變換: 支持圖像像素源圖片變換效果。
  • 支持用戶配置參數使用:( 例如:配置是否開啟一級內存緩存,配置磁盤緩存策略,配置僅使用緩存加載數據,配置圖片變換效果,配置占位圖,配置加載失敗占位圖等)。
  • 推薦使用ImageKnifeComponent組件配合ImageKnifeOption參數來實現功能。
  • 支持用戶自定義配置實現能力參考ImageKnifeComponent組件中對于入參ImageKnifeOption的處理。

下載安裝

ohpm install @ohos/imageknife

使用說明

1.依賴配置

在entrysrcmainetsentryabilityEntryAbility.ts中做如下配置初始化全局ImageKnife實例:

import UIAbility from '@ohos.app.ability.UIAbility';
import window from '@ohos.window';
import { ImageKnife } from '@ohos/imageknife'

export default class EntryAbility extends UIAbility {
  onWindowStageCreate(windowStage: window.WindowStage) {
    windowStage.loadContent('pages/Index', (err, data) = > {
    });
    // 初始化全局ImageKnife 
    ImageKnife.with(this.context);
  	// 后續訪問ImageKnife請通過:ImageKnifeGlobal.getInstance().getImageKnife()方式
  }
}

2.加載普通圖片

接下來我們來寫個簡單實例看看:

import { ImageKnifeComponent, ImageKnifeOption } from '@ohos/imageknife'

@Entry
@Component
struct Index {
  @State message: string = 'Hello World'
  @State option: ImageKnifeOption = {
    loadSrc: $r('app.media.icon')
  }

  build() {
      Row() {
        Column() {
          Text(this.message)
            .fontSize(50)
            .fontWeight(FontWeight.Bold)
          ImageKnifeComponent({ imageKnifeOption: this.option })
            .width(300)
            .height(300)
        }.width('100%')
      }.height('100%')
  }
}

非常簡單,僅需定義一個ImageKnifeOption數據對象,然后在你需要的UI位置,加入ImageKnifeComponent自定義組件就可以加載出一張圖像了。

3.加載SVG圖片

加載svg其實和普通流程沒有區別,只要將 loadSrc: $r('app.media.jpgSample'),``改成一張 loadSrc: $r('app.media.svgSample'), svg類型圖片即可。

4.加載GIF圖片

加載GIF其實和普通流程也沒有區別只要將 loadSrc: $r('app.media.jpgSample'),``改成一張 loadSrc: $r('app.media.gifSample'), GIF圖片即可。

5.自定義Key

因為通常改變標識符比較困難或者根本不可能,所以ImageKnife也提供了 簽名 API 來混合(你可以控制的)額外數據到你的緩存鍵中。 簽名(signature)適用于媒體內容,也適用于你可以自行維護的一些版本元數據。

將簽名傳入加載請求

imageKnifeOption = {
                loadSrc: 'https://aahyhy.oss-cn-beijing.aliyuncs.com/blue.jpg',
                signature: new ObjectKey(new Date().getTime().toString())
              }

詳細樣例請參考SignatureTestPage文件

代碼示例

進階使用

如果簡單的加載一張圖像無法滿足需求,我們可以看看ImageKnifeOption這個類提供了哪些擴展能力。

ImageKnifeOption參數列表

參數名稱入參內容功能簡介
loadSrcstringPixelMap
mainScaleTypeScaleType設置主圖展示樣式(可選)
strategyDiskStrategy設置磁盤緩存策略(可選)
dontAnimateFlagbooleangif加載展示一幀(可選)
placeholderSrcPixelMapResource
placeholderScaleTypeScaleType設置占位圖展示樣式(可選)
errorholderSrcPixelMapResource
errorholderSrcScaleTypeScaleType設置失敗占位圖展示樣式(可選)
retryholderSrcPixelMapResource
retryholderScaleTypeScaleType設置重試占位圖展示樣式(可選)
thumbSizeMultipliernumber 范圍(0,1]設置縮略圖占比(可選)
thumbSizeDelaynumber設置縮略圖展示時間(可選)
thumbSizeMultiplierScaleTypeScaleType設置縮略圖展示樣式(可選)
displayProgressboolean設置是否展示下載進度條(可選)
canRetryClickboolean設置重試圖層是否點擊重試(可選)
onlyRetrieveFromCacheboolean僅使用緩存加載數據(可選)
isCacheableboolean是否開啟一級內存緩存(可選)
gif{ // 返回一周期動畫gif消耗的時間 loopFinish?: (loopTime?) => void // gif播放速率相關 speedFactory?: number // 直接展示gif第幾幀數據 seekTo?: number }GIF播放控制能力(可選)
transformationBaseTransform單個變換(可選)
transformationsArray多個變換,目前僅支持單個變換(可選)
allCacheInfoCallbackIAllCacheInfoCallback輸出緩存相關內容和信息(可選)
signatureObjectKey自定key(可選)
drawLifeCycleIDrawLifeCycle用戶自定義實現繪制方案(可選)
imageSmoothingEnabledboolean抗鋸齒是否開啟屬性配置,設置為false時,imageSmoothingQuality失效
imageSmoothingQualityAntiAliasing抗鋸齒屬性配置

其他參數只需要在ImageKnifeOption對象上按需添加即可。

這里我們著重講一下 自定義實現繪制方案 。為了增強繪制擴展能力,目前ImageKnifeComponent使用了Canvas的渲染能力作為基礎。在此之上為了抽象組件繪制表達。我將圖像的狀態使用了 IDrawLifeCycle繪制生命周期進行表達

大致流程 展示占位圖->展示網絡加載進度->展示縮略圖->展示主圖->展示重試圖層->展示失敗占位圖

ImageKnifeComponent內部,責任鏈實現。 用戶參數設置->全局參數設置->自定義組件內部設置

采用責任鏈的好處是,用戶可以通過自定義繪制,重新繪制圖層。如果不想繪制也可以通過預制回調獲取繪制流程信息。

場景1:默認的展示不滿足需求,需要加個圓角效果。

代碼如下:

import { ImageKnifeComponent } from '@ohos/imageknife'
import { ImageKnifeOption } from '@ohos/imageknife'
import { ImageKnifeDrawFactory } from '@ohos/imageknife'

@Entry
@Component
struct Index {
  @State imageKnifeOption1: ImageKnifeOption = { 
      // 加載一張本地的jpg資源(必選)
      loadSrc: $r('app.media.jpgSample'),
      // 占位圖使用本地資源icon_loading(可選)
      placeholderSrc: $r('app.media.icon_loading'),
      // 失敗占位圖使用本地資源icon_failed(可選)
      errorholderSrc: $r('app.media.icon_failed'),
      // 繪制圓角30,邊框5,邊框"#ff00ff".用戶自定義繪制(可選)
      drawLifeCycle:ImageKnifeDrawFactory.createRoundLifeCycle(5,"#ff00ff",30)
    };
        
    build(){
        Scroll() {
          Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
            ImageKnifeComponent({ imageKnifeOption: this.imageKnifeOption1 })
            .width(300) 
            .height(300)
          }
        }
        .width('100%')
        .height('100%')
    }
}

ImageKnifeDrawFactory.createRoundLifeCycle(5,"#ff00ff",30) 我們深入查看源碼可以發現,實際上是對IDrawLifeCycle接口的部分實現,這里我介紹一下IDrawLifeCycle。

IDrawLifeCycle的返回值代表事件是否被消費,如果被消費接下來組件內部就不會處理,如果沒被消費就會傳遞到下一個使用者。目前消費流程(用戶自定義-> 全局配置定義->組件內部默認定義) *

所以我們在當數據是一張PixelMap的時候(目前jpg png bmp webp svg返回的都是PixelMap,gif返回GIFFrame數組),我們返回了true。消費了事件,代表這個繪制流程用戶自定義完成。

由于IDrawLifeCycle實現較為冗長,我們封裝了ImageKnifeDrawFactory工廠,提供了網絡下載百分比效果、圓角、橢圓添加邊框等能力。下面我們就再看看使用工廠封裝之后的場景代碼。

場景2: 網絡下載百分比效果展示

當進行加載網絡圖片時,可能需要展示網絡下載百分比動畫。但是默認的動畫又不能滿足需求,這個時候我們就需要自定義網絡下載百分比效果。代碼如下:

import UIAbility from '@ohos.app.ability.UIAbility';
import window from '@ohos.window';
import { ImageKnifeGlobal,ImageKnife,ImageKnifeDrawFactory,LogUtil } from '@ohos/imageknife'
import abilityAccessCtrl,{Permissions} from '@ohos.abilityAccessCtrl';
export default class EntryAbility extends UIAbility {
    onWindowStageCreate(windowStage: window.WindowStage) {
        //.. 刪除不必要代碼
        windowStage.loadContent('pages/index', (err, data) = > {
        });
       	// 初始化ImageKnifeGlobal和ImageKnife
        ImageKnife.with(this.context);
        // 全局配置網絡加載進度條 使用ImageKnifeGlobal.getInstance().getImageKnife()訪問ImageKnife
ImageKnifeGlobal.getInstance().getImageKnife().setDefaultLifeCycle(ImageKnifeDrawFactory.createProgressLifeCycle("#10a5ff", 0.5))
    }
}

這里大家可能會問,為什么會將這個IDrawLifeCycle放在AbilityStage里面實現?

這是因為網絡下載百分比進度很多時候都是全局通用,如果有需要全局配置的自定義展示方案。推薦在AbilityStage里面,往ImageKnife的setDefaultLifeCycle函數中注入,即可將ImageKnifeComponent中的默認繪制方案替換。

在這里我們實現的效果如下圖所示。

高級用法

以上簡單使用和進階使用都是經過一層自定義組件封裝之后形成的,RequestOption封裝成了ImageKnifeOption,繪制部分封裝成了自定義組件ImageKnifeComponent。

如果用戶其實并不關心繪制部分,或者說想用自己的通用方案對自定義組件ImageKnifeComponent重構都是可以的。

下面我們會著重指導用戶如何復用圖片加載邏輯,重構自定義組件ImageKnifeComponent。

首先我們先看看RequestOption構建的內容,如下所示:

數據加載

RequestOption構建:

請查閱下文接口內容:[RequestOption接口方法]

了解了RequestOption的參數內容后,我們可以參考ImageKnifeComponent組件代碼進行分析。

imageKnifeExecute()函數入口,首先我們需要構建一個RequestOption對象,let request = new RequestOption(), 接下來就是按需配置request對象的內容,最后使用 ImageKnifeGlobal.getInstance().getImageKnife()?.call(request)發送request執行任務即可。

是不是很簡單,而其實最重要的內容是就是: 按需配置request對象的內容 為了更好理解,我舉例說明一下:

場景一: 簡單加載一張圖片

let request = new RequestOption();
// (必傳)
request.load("圖片url")
  // (可選 整個request監聽回調)
	.addListener({callback:(err:BusinessError|string, data:ImageKnifeData) = > {
	// data 是ImageKnifeData對象
	if(data.isPixelMap()){
	// 這樣就獲取到了目標PixelMap
	let pixelmap = data.drawPixleMap.imagePixelMap;
	}
    return false;
  })
 
  let compSize:Size = {
    width: this.currentWidth,
    height:this.currentHeight
  }
  // (必傳)這里setImageViewSize函數必傳組件大小,因為涉及到圖片變換效果都需要適配圖像源和組件大小
 request.setImageViewSize(compSize)
 // 最后使用ImageKnife的call函數調用request即可
 let imageKnife:ImageKnife|undefined = ImageKnifeGlobal.getInstance().getImageKnife();
 if(imageKnife != undefined){
 	imageKnife.call(request)
 }

其他場景,可以按需加載

比如我需要配置 占位圖 只需要 在request對象創建好之后,調用 placeholder 函數即可

request.placeholder(this.imageKnifeOption.placeholderSrc, (data) = > {
  console.log('request.placeholder callback')
  this.displayPlaceholder(data)
})

再比如 我對緩存配置有要求,我要禁用內存緩存,調用 skipMemoryCache 函數即可

request.skipMemoryCache(true)

這里只是簡單介紹部分使用,更多的內容請參考 按需加載 原則,并且可以參考ImageKnifeComponent源碼或者根據文檔自行探索實現。

接口說明

RequestOption用戶配置參數

方法名入參接口描述
load(src: stringPixelMapResource)
setImageViewSize(imageSize: { width: number, height: number })imageSize:{width: number, height: number }傳入顯示圖片組件的大小,變換的時候需要作為參考
diskCacheStrategy(strategy: DiskStrategy)strategy:DiskStrategy配置磁盤緩存策略 NONE SOURCE RESULT ALL AUTOMATIC
placeholder(src: PixelMapResource, func?: AsyncSuccess)src: PixelMap
errorholder(src: PixelMapResource, func?: AsyncSuccess)src: PixelMap
retryholder(src: PixelMapResource, func?: AsyncSuccess)src: PixelMap
addListener(func: AsyncCallback)func: AsyncCallback配置整個監聽回調,數據正常加載返回,加載失敗返回錯誤信息
thumbnail(sizeMultiplier:number, func?: AsyncSuccess)sizeMultiplier:number, func?: AsyncSuccess設置縮略圖比例,縮略圖返回后,加載并展示縮略圖
addProgressListener(func?: AsyncSuccess)func?: AsyncSuccess設置網絡下載百分比監聽,返回數據加載百分比數值
addAllCacheInfoCallback(func: IAllCacheInfoCallback)func: IAllCacheInfoCallback設置獲取所有緩存信息監聽
skipMemoryCache(skip: boolean)skip: boolean配置是否跳過內存緩存
retrieveDataFromCache(flag: boolean)flag: boolean配置僅從緩存中加載數據
signatureObjectKey自定義key

同時支持[圖片變換相關]接口。

ImageKnife 啟動器/門面類

方法名入參接口描述
call(request: RequestOption)request: RequestOption根據用戶配置參數具體執行加載流程
preload(request: RequestOption)request: RequestOption根據用戶配置參數具體執行預加載流程
pauseRequests()全局暫停請求
resumeRequests()全局恢復暫停

緩存策略相關

使用方法類型策略描述
request.diskCacheStrategy(new ALL())ALL表示既緩存原始圖片,也緩存轉換過后的圖片
request.diskCacheStrategy(new AUTOMATIC())AUTOMATIC表示嘗試對本地和遠程圖片使用適合的策略
request.diskCacheStrategy(new DATA())DATA表示只緩存原始圖片
request.diskCacheStrategy(new NONE())NONE表示不緩存任何內容
request.diskCacheStrategy(new RESOURCE())RESOURCE表示只緩存轉換過后的圖片

AntiAliasing類型展示效果

使用方法類型策略描述
AntiAliasing.FIT_HIGHString圖像抗鋸齒設置為高畫質
AntiAliasing.FIT_MEDIUMString圖像抗鋸齒設置為中畫質
AntiAliasing.FIT_LOWString圖像抗鋸齒設置為低畫質

ScaleType類型展示效果

使用方法類型策略描述
ScaleType.FIT_STARTint圖像位于用戶設置組件左上角顯示,圖像會縮放至全部展示
ScaleType.FIT_ENDint圖像位于用戶設置組件右下角顯示,圖像會縮放至全部展示
ScaleType.FIT_CENTERint圖像位于用戶設置組件居中,圖像會縮放至全部展示
ScaleType.CENTERint圖像居中展示,不縮放
ScaleType.CENTER_CROPint圖像的寬高長度,短的部分縮放至組件大小,超出的全部裁剪
ScaleType.FIT_XYint圖像拉伸至組件大小
ScaleType.CENTER_INSIDEint如果圖像大于組件則執行FIT_CENTER,小于組件則CENTER
ScaleType.NONEint如果不想適配,直接展示原圖大小

圖片變換相關

使用方法類型相關描述
request.centerCrop()CenterCrop可以根據圖片文件,目標顯示大小,進行對應centerCrop
request.centerInside()CenterInside可以根據圖片文件,目標顯示大小,進行對應centerInside
request.fitCenter()FitCenter可以根據圖片文件,目標顯示大小,進行對應fitCenter
request.blur()BlurTransformation模糊處理(圖片分辨率較大建議傳遞第二個參數將圖片進行縮小)
request.ightnessFilter()BrightnessFilterTransformation亮度濾波器
request.contrastFilter()ContrastFilterTransformation對比度濾波器
request.cropCircle()CropCircleTransformation圓形剪裁顯示
request.cropCircleWithBorder()CropCircleWithBorderTransformation圓環展示
request.cropSquare()CropSquareTransformation正方形剪裁
request.crop()CropTransformation自定義矩形剪裁
request.grayscale()GrayscaleTransformation灰度級轉換
request.invertFilter()InvertFilterTransformation反轉濾波器
request.pixelationFilter()PixelationFilterTransformation像素化濾波器
request.rotateImage()RotateImageTransformation圖片旋轉
request.roundedCorners()RoundedCornersTransformation圓角剪裁
request.sepiaFilter()SepiaFilterTransformation烏墨色濾波器
request.sketchFilter()SketchFilterTransformation素描濾波器
request.mask()MaskTransformation遮罩
request.swirlFilter()SwirlFilterTransformation扭曲濾波器
request.kuwaharaFilter()KuwaharaFilterTransform桑原濾波器
request.toonFilter()ToonFilterTransform動畫濾波器
request.vignetteFilter()VignetteFilterTransform裝飾濾波器

setLruCacheSize

setLruCacheSize(size: number,memory:number): void

設置圖片文件緩存的大小上限,size單位為張數,memory單位為字節,提升再次加載同源圖片的加載速度,特別是對網絡圖源會有較明顯提升。 如果不設置則默認為100張,100MB。緩存采用內置的LRU策略。 size為0則代表不限制緩存張數,memory為0則代表不限制緩存大小。 建議根據應用實際需求,設置合理緩存上限,數字過大可能導致內存占用過高,可能導致OOM異常。

參數:

參數名類型必填說明
sizenumber圖片文件的緩存張數,單位為張。只支持正整數,0
memorynumber圖片文件的緩存大小,單位為字節。只支持正數,0

示例:

//EntryAbility.ets
import { InitImageKnife } from '...imageknife'
export default class EntryAbility extends UIAbility {
  onWindowStageCreate(windowStage: window.WindowStage) { 
    InitImageKnife.init(this.context);
    let imageKnife: ImageKnife | undefined = ImageKnifeGlobal.getInstance().getImageKnife()
    if (imageKnife != undefined) {
      //設置全局內存緩存大小張數
      imageKnife.setLruCacheSize(100, 100 * 1204 * 1024)
    }
  }
}

約束與限制

在下述版本驗證通過: DevEco Studio 4.1(4.1.3.520)--SDK:API11( 4.1.0.63) DevEco Studio 4.1(4.1.3.418)--SDK:API11( 4.1.0.56) DevEco Studio 4.1(4.1.3.322)--SDK:API11( 4.1.0.36) DevEco Studio 4.0(4.0.3.700)--SDK:API10( 4.0.10.15)

HSP場景適配:

在使用ImageKnifeComponent進行加載圖片時, 提供的ImageKnifeOption配置類新增了可選參數context, 在HSP場景下需要傳入正確的context, 才能保證三方庫后續正確獲取Resource資源。

在使用RquestOption進行加載圖片時, 提供的RquestOption配置類新增了接口setModuleContext(moduleCtx:common.UIAbilityContext), 在HSP場景下需要傳入正確的context, 才能保證三方庫后續正確獲取Resource資源。

非HSP場景不影響原功能, ImageKnifeOption配置類新增的可選參數context可以不傳, RquestOption配置類新增的接口可以不調用。

更多鴻蒙開發知識已經更新在[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]前往參考。

HarmonyOS與OpenHarmony技術路線曲線圖1.png

遺留問題

1.目前只支持一種圖片變換效果。

2.目前svg和gif動圖不支持變換效果。

補充說明

SVG標簽說明

使用版本為(SVG)1.1,當前支持的標簽列表有:

  • a
  • circla
  • clipPath
  • defs
  • ellipse
  • feBlend
  • feColorMatrix
  • feComposite
  • feDiffuseLighting
  • feDisplacementMap
  • feDistantLight
  • feFlood
  • feGaussianBlur
  • feImage
  • feMorphology
  • feOffset
  • fePointLight
  • feSpecularLighting
  • feSpotLight
  • feTurbulence
  • filter
  • g
  • image
  • line
  • linearGradient
  • mask
  • path
  • pattern
  • polygon
  • polyline
  • radialGradient
  • rect
  • stop
  • svg
  • text
  • textPath
  • tspan
  • use

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鴻蒙
    +關注

    關注

    59

    文章

    2531

    瀏覽量

    43789
  • OpenHarmony
    +關注

    關注

    27

    文章

    3835

    瀏覽量

    18179
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    鴻蒙5開發寶藏案例分享---自由流轉的拖拽多屏聯動

    ?【干貨預警】鴻蒙開發寶藏案例大揭秘!手把手教你玩轉常用功能**?** 大家好呀~我是你們的老朋友[你的名字],今天在扒拉鴻蒙文檔的時候,突然發現官方竟然藏了一堆超實用的開發案例!?*
    發表于 06-03 18:50

    鴻蒙5開發寶藏案例分享---一多開發實例(購物比價)

    鴻蒙開發寶藏案例大公開!】手把手教你用\"一多\"能力打造跨端購物比價App 小伙伴們好呀!今天要和大家分享一個鴻蒙開發的隱藏寶典——官方購物比價應用
    發表于 06-03 16:07

    MCU緩存設計

    從Flash或外部存儲器讀取的指令,減少CPU因等待指令加載而停滯,適用于實時性要求高的場景(如中斷服務程序)。 D-Cache?:緩存從Flash、SRAM或外部存儲器讀取的數據,加速變量與堆棧的讀寫操作。 TCM(緊耦合內存)?:部分MCU(如STM32H743)設置
    的頭像 發表于 05-07 15:29 ?276次閱讀

    “RdbStore”上線開源鴻蒙社區 助力鴻蒙應用數據訪問效率大幅提升

    近日,由伙伴參與共建的鴻蒙關系映射數據“RdbStore”正式上線OpenHarmony社區,為鴻蒙生態開發者提供了簡單高效的關系映射數據
    的頭像 發表于 03-18 15:02 ?285次閱讀

    Get這個秘籍,鴻蒙原生應用頁面滑動絲滑無比

    Prefetcher接口監聽數據項的變化,動態控制資源的下載與取消,并結合ImageKnife三方實現具體的預取和緩存管理。這種動態預加載策略突破了以往解決方案的局限性,提供了一種更
    發表于 03-06 14:41

    FPGA圖像處理基礎----實現緩存卷積窗口

    素行進行緩存與變換。由于在圖像處理過程中,經常會使用到卷積,因此需要對圖像進行開窗,然后將開窗得到的局部圖像與卷積核進行卷積,從而完成處理。 ??
    的頭像 發表于 02-07 10:43 ?729次閱讀
    FPGA<b class='flag-5'>圖像</b>處理基礎----實現<b class='flag-5'>緩存</b>卷積窗口

    #新年新氣象,大家新年快樂!#AIGC入門及鴻蒙入門

    。 2. 實踐操作: 使用Python進行實踐,通過transformers加載預訓練的文本生成模型。 學習圖像生成算法,如生成對抗網絡(GAN)等。 3. 工具推薦: ChatGPT:由OpenAI
    發表于 01-13 10:46

    AIGC入門及鴻蒙入門

    。 2. 實踐操作: 使用Python進行實踐,通過transformers加載預訓練的文本生成模型。 學習圖像生成算法,如生成對抗網絡(GAN)等。 3. 工具推薦: ChatGPT:由OpenAI
    發表于 01-13 10:32

    鴻蒙原生頁面高性能解決方案上線OpenHarmony社區 助力打造高性能原生應用

    ,大幅縮短了冷啟動時間。此外,它提供通用本地緩存,幫助開發者更快實現緩存邏輯,提高開發效率與應用體驗。某頭部網盤APP使用該方案后,首頁冷
    發表于 01-02 18:00

    鴻蒙Flutter實戰:14-現有Flutter 項目支持鴻蒙 II

    ,職責分離,平臺抽象,不同平臺組合打包,有效解決平臺不一致問題 參考資料 鴻蒙Flutter實戰:01-搭建開發環境 鴻蒙Flutter實戰:09-現有Flutter項目支持鴻蒙 Fl
    發表于 12-26 14:59

    鴻蒙原生開源ViewPool在OpenHarmony社區正式上線

    近日,由伙伴參與共建的鴻蒙原生開源“ViewPool”在OpenHarmony社區正式上線。這個開發是基于OpenHarmony技術孵化的成果,充分發揮了平臺的技術特性,同時融入了
    的頭像 發表于 12-20 14:44 ?566次閱讀

    HTTP緩存頭的使用 本地緩存與遠程緩存的區別

    HTTP緩存頭是一組HTTP響應頭,它們控制瀏覽器和中間代理服務器如何緩存網頁內容。合理使用HTTP緩存頭可以顯著提高網站的加載速度和性能,減少服務器的負載。 1. HTTP
    的頭像 發表于 12-18 09:41 ?389次閱讀

    緩存技術在軟件開發中的應用

    在現代軟件開發中,隨著數據量的爆炸性增長和用戶對響應速度的高要求,緩存技術成為了提升系統性能的重要手段。緩存技術通過將數據存儲在離用戶更近的位置,減少數據訪問延遲,提高數據處理速度,從而優化
    的頭像 發表于 12-18 09:32 ?639次閱讀

    12G-SDI高清視頻開發案例,讓4K視頻采集更便捷!基于Xilinx MPSoC高性能平臺

    本帖最后由 Tronlong創龍科技 于 2024-10-29 10:35 編輯 本文主要介紹基于Xilinx UltraScale+ MPSoC XCZU7EV的12G-SDI高清視頻開發案
    發表于 10-29 10:09

    DSP教學實驗箱操作教程_數字圖像處理:5-5 灰度圖像直方圖

    ,…,M-1, 0,…,N-1 (3)標準化 hist[f(x,y)]/=M*N 程序設計 程序流程設計中首先要讀取工程目錄下的BMP圖像,接著進行直方圖統計,最后保存統計結果。 視頻分析與視覺
    發表于 06-25 15:10