Javascript 使用HTML5画布检测图像透明度存在误报

Javascript 使用HTML5画布检测图像透明度存在误报,javascript,html,canvas,Javascript,Html,Canvas,我试图使用HTML5画布检测图像是否具有透明度。这是我的代码,它基于我在互联网上找到的使用画布(例如)检测透明像素的逻辑: 我的问题是,如何可靠地检测PNG和TIF文件中的透明度?有几种可能性: 检查控制台,确保您没有因尝试对从网页代码以外的其他域加载的图像执行.getImageData操作而导致跨域安全冲突 确保将画布调整为与图像相同的大小,否则图像未覆盖画布时,某些像素将是透明的 c.width=element.width; c.height=element.height; **示例代码和

我试图使用HTML5画布检测图像是否具有透明度。这是我的代码,它基于我在互联网上找到的使用画布(例如)检测透明像素的逻辑:


我的问题是,如何可靠地检测PNG和TIF文件中的透明度?

有几种可能性:

检查控制台,确保您没有因尝试对从网页代码以外的其他域加载的图像执行
.getImageData
操作而导致跨域安全冲突

确保将画布调整为与图像相同的大小,否则图像未覆盖画布时,某些像素将是透明的

c.width=element.width;
c.height=element.height;
**示例代码和演示:**
var canvas1=document.getElementById(“canvas1”);
var ctx1=canvas1.getContext(“2d”);
var canvas2=document.getElementById(“canvas2”);
var ctx2=canvas2.getContext(“2d”);
$p1=$(“#结果1”);
$p2=$(“#结果2”);
var img1=新图像();
img1.crossOrigin='anonymous'
img1.onload=start1;
img1.src=”https://dl.dropboxusercontent.com/u/139992952/stackoverflow/house204-1.jpg";
函数start1(){
画布1.宽度=img1.宽度;
画布1.高度=img1.高度;
ctx1.drawImage(img1,0,0);
var imgData=ctx1.getImageData(0,0,canvas1.width,canvas1.height);
var数据=imgData.data;
var found1='Left canvas没有透明度';

对于(var i=0;i有几种可能性:

检查控制台,确保您没有因尝试对从网页代码以外的其他域加载的图像执行
.getImageData
操作而导致跨域安全冲突

确保将画布调整为与图像相同的大小,否则图像未覆盖画布时,某些像素将是透明的

c.width=element.width;
c.height=element.height;
**示例代码和演示:**
var canvas1=document.getElementById(“canvas1”);
var ctx1=canvas1.getContext(“2d”);
var canvas2=document.getElementById(“canvas2”);
var ctx2=canvas2.getContext(“2d”);
$p1=$(“#结果1”);
$p2=$(“#结果2”);
var img1=新图像();
img1.crossOrigin='anonymous'
img1.onload=start1;
img1.src=”https://dl.dropboxusercontent.com/u/139992952/stackoverflow/house204-1.jpg";
函数start1(){
画布1.宽度=img1.宽度;
画布1.高度=img1.高度;
ctx1.drawImage(img1,0,0);
var imgData=ctx1.getImageData(0,0,canvas1.width,canvas1.height);
var数据=imgData.data;
var found1='Left canvas没有透明度';

for(var i=0;i设置画布的大小已生效。跨域问题不适用(尚未)。谢谢。设置画布的大小已生效。跨域问题不适用(尚未)。谢谢。
c.width=element.width;
c.height=element.height;