- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在编写一些获取天气模型图像并测试像素颜色的代码。这是我的全部代码:
<html>
<head>
<meta title="PRWW PreCast (v0.1)">
<meta charset="UTF-8">
</head>
<body>
<canvas id="canvas" width="1024px" height="764px">
<img id="map" src=""/>
</canvas>
<script>
//Time Variables
var currentYear = new Date().getFullYear();
var currentMonth = new Date().getMonth() + 1;
var currentDay = new Date().getDate();
var currentHour = new Date().getHours();
var currentRun;
//Formatting Time Variables for URLs
if (currentMonth < 10) {
currentMonth = "0" + currentMonth;
}
if (currentDay < 10) {
currentDay = "0" + currentDay;
}
//Finding Latest Model Run
if (currentHour >= 0 && currentHour < 6) {
currentRun = "00";
}
if (currentHour >= 6 && currentHour < 12) {
currentRun = "06";
}
if (currentHour >= 12 && currentHour < 18) {
currentRun = "12";
}
if (currentHour >= 18 && currentHour < 24) {
currentRun = "18";
}
var currentRun = currentRun;
//Creating URL
var mapAddress = "http://www.tropicaltidbits.com/analysis/models/gfs/" + currentYear + currentMonth + currentDay + currentRun + "/gfs_mslp_pcpn_neus_" + 1 + ".png";
//Insert Image to Document
document.getElementById("map").setAttribute("src", mapAddress);
setTimeout(2000);
//Load Image and Get Image Data
document.getElementById("canvas").getContext("2d").drawImage(document.getElementById("map"), 0, 0);
document.getElementById("map").crossOrigin = "Anonymous";
var pixelColor = document.getElementById("canvas").getContext("2d").getImageData(469,451,1,1).data;
//Test Pixel Data for Color
if (pixelColor[0] == 255 && pixelColor[1] == 255 && pixelColor[2] == 255 && pixelColor[3] == 255) {
console.log("The code ran the 'if' part of the PixelColor if statement.");
} else {
console.log("The code ran the 'else' part of the pixelColor if statement.");
}
</script>
由于某种原因,应该显示在 Canvas 中的图像没有显示。谁能告诉我为什么,我该如何解决?因为我是初学者,所以我想要只涉及 HTML 或 Javascript 的解决方案。
最佳答案
您需要等待图片加载完毕才能访问它。
// only use one of the following two lines.
var image = new Image();
// or
var image = document.getElementById("map");
// set the image location.
image.src = mapAddress; // setting the source does not mean the image has loaded.
image.onload = function(event){ // fires when image has loaded. this points to the image
var c = document.createElement("canvas"); // create a canvas
c.width = this.width; // set its size to match the image
c.height = this.height;
this.ctx = c.getContext("2d"); // get the 2D context
this.ctx.drawImage(this, 0, 0); // draw the image onto the canvas
try{
var imageDat = this.ctx.getImageData(0,0,this.width,this.height); // get the image pixel data
// you can now access the pixel data.
}catch(e){
// if this runs then you can not access the image data.
alert("Cross origin resticted access");
}
}
image.onerror = function(event){
// there was an error loading the image.
alert("Image '"+this.src+"'\nFailed to load!");
}
关于Javascript 设置图像的 src 属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34830844/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!