位圖操作

2024-02-16 13:59 更新

當(dāng)需要對(duì)目標(biāo)圖片中的部分區(qū)域進(jìn)行處理時(shí),可以使用位圖操作功能。此功能常用于圖片美化等操作。

如下圖所示,一張圖片中,將指定的矩形區(qū)域像素?cái)?shù)據(jù)讀取出來(lái),進(jìn)行修改后,再寫(xiě)回原圖片對(duì)應(yīng)區(qū)域。

圖1 位圖操作示意圖

開(kāi)發(fā)步驟

位圖操作相關(guān)API的詳細(xì)介紹請(qǐng)參見(jiàn)API參考。

  1. 完成圖片解碼,獲取PixelMap位圖對(duì)象。
  2. 從PixelMap位圖對(duì)象中獲取信息。

    1. // 獲取圖像像素的總字節(jié)數(shù)
    2. let pixelBytesNumber = pixelMap.getPixelBytesNumber();
    3. // 獲取圖像像素每行字節(jié)數(shù)
    4. let rowCount = pixelMap.getBytesNumberPerRow();
    5. // 獲取當(dāng)前圖像像素密度。像素密度是指每英寸圖片所擁有的像素?cái)?shù)量。像素密度越大,圖片越精細(xì)。
    6. let getDensity = pixelMap.getDensity();
  3. 讀取并修改目標(biāo)區(qū)域像素?cái)?shù)據(jù),寫(xiě)回原圖。
    1. // 場(chǎng)景一:將讀取的整張圖像像素?cái)?shù)據(jù)結(jié)果寫(xiě)入ArrayBuffer
    2. const readBuffer = new ArrayBuffer(pixelBytesNumber);
    3. pixelMap.readPixelsToBuffer(readBuffer).then(() => {
    4. console.info('Succeeded in reading image pixel data.');
    5. }).catch(error => {
    6. console.error('Failed to read image pixel data. And the error is: ' + error);
    7. })
    8. // 場(chǎng)景二:讀取指定區(qū)域內(nèi)的圖片數(shù)據(jù),結(jié)果寫(xiě)入area.pixels中
    9. const area = {
    10. pixels: new ArrayBuffer(8),
    11. offset: 0,
    12. stride: 8,
    13. region: { size: { height: 1, width: 2 }, x: 0, y: 0 }
    14. }
    15. pixelMap.readPixels(area).then(() => {
    16. console.info('Succeeded in reading the image data in the area.');
    17. }).catch(error => {
    18. console.error('Failed to read the image data in the area. And the error is: ' + error);
    19. })
    20. // 對(duì)于讀取的圖片數(shù)據(jù),可以獨(dú)立使用(創(chuàng)建新的pixelMap),也可以對(duì)area.pixels進(jìn)行所需修改
    21. // 將圖片數(shù)據(jù)area.pixels寫(xiě)入指定區(qū)域內(nèi)
    22. pixelMap.writePixels(area).then(() => {
    23. console.info('Succeeded to write pixelMap into the specified area.');
    24. })
    25. // 將圖片數(shù)據(jù)結(jié)果寫(xiě)入pixelMap中
    26. const writeColor = new ArrayBuffer(96);
    27. pixelMap.writeBufferToPixels(writeColor, () => {});
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)