首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

不規則圖片拼接與點擊區域識別:使用 HTML5 Canvas 或圖像映射

     編輯:程式設計疑難解答

需求

將兩張不規則形狀圖片拼合,並在點擊時精確判斷屬於哪張圖片。

方案對比

方案原理優點缺點
CSS clip-pathCSS 裁剪路徑定義可見區域無需 JS,純聲明式瀏覽器兼容性較差,複雜形狀路徑難寫
HTML <map><area>圖像映射定義多邊形熱區原生支持,無依賴座標需手工測量,響應式困難
Canvas 像素檢測繪製圖片至 Canvas,點擊時讀取像素 Alpha 通道精確到像素級,支持任意形狀需處理高 DPI、跨域圖片污染
SVG 包裹用 <svg><image>+<path> 定義點擊區域矢量縮放不失真,易綁定事件需將位圖轉矢量路徑

推薦:Canvas 方案示例

const canvas = document.getElementById('c');
const ctx = canvas.getContext('2d');
const img1 = new Image(); img1.src = 'img1.png';
const img2 = new Image(); img2.src = 'img2.png';

Promise.all([img1.decode(), img2.decode()]).then(() => {
    ctx.drawImage(img1, 0, 0);
    ctx.drawImage(img2, img1.width, 0);
});

canvas.onclick = e => {
    const rect = canvas.getBoundingClientRect();
    const x = e.clientX - rect.left;
    const y = e.clientY - rect.top;
    const pixel = ctx.getImageData(x, y, 1, 1).data;
    if (pixel[3] > 0) { // Alpha > 0 表示有內容
        // 判斷屬於哪張圖:根據 x 範圍或顏色特徵
    }
};

參考鏈接:Canvas 不規則圖片點擊檢測詳解

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved