使用图像而不是画布
Using Image instead of Canvas
本文关键字:图像 更新时间:2023-09-26
我有一个图像,我想在上面画一些正方形。但是我一直在getContext('2d')
上得到未定义的函数。我必须补充一点,var img 是一个已经加载到页面上的图像,我正在尝试将其解释为画布,因为我正在使用另一个脚本,它可以选择图像上的区域,如果我使用画布,脚本将不起作用。因此,如果我无法将图像解释为画布,您会有什么建议?
Js 函数
function drawInput(dx1,dy1,dx2,dy2) {
var img = document.getElementById('home:tempImg');
var canvas = img;
console.log(canvas);
var context = canvas.getContext('2d');
var imageObj = new Image();
imageObj.onload = function() {
context.drawImage(imageObj, dx1, dy1,dx2-dx1,dy2-dy1);
};
imageObj.src = 'images/selected.png';
}
.HTML
<h:body>
<h:form onsubmit="#{getComponents.getAllComponents()}" id="home">
<div>
<p:graphicImage id="tempImg" rendered="true" value="#{imageView.selectedImg}">
</p:graphicImage>
</div>
</h:form>
</h:body>
<script type="text/javascript">
var myJSONStr ='{ "area" : #{areaInputView.areaListString}}';
console.log(myJSONStr);
var json = JSON.parse(myJSONStr);
//console.log(json.area[1].x1);
for(var i=0;myJSONStr.length >i ; i++) {
console.log(json.area[i].x1, json.area[i].y1, json.area[i].x2, json.area[i].y2);
drawInput(json.area[i].x1, json.area[i].y1, json.area[i].x2, json.area[i].y2);
};
</script>
</html>
通过利用自定义 JS 'class'(在本例中为 app.Image
类型),我们可以构建一个非常整洁的包装器,允许我们根据我们跟踪的其他实例动态绘制图像。
查看此代码笔以获取工作示例。
window.app = window.app || {};
app.Canvas = document.getElementById('myCanvas').getContext('2d');
app.Image = function(source, x, y) {
this.x = x;
this.y = y;
this.data = new Image();
this.data.addEventListener('load', this.draw.bind(this));
this.data.src = source;
};
app.Image.prototype.draw = function() {
app.Canvas.drawImage(this.data, this.x, this.y);
};
app.Image.prototype.getImageBounds = function() {
return {
height: this.data.height,
width: this.data.width
}
};
var myImage = new app.Image('http://placehold.it/250x250', 10, 10);
var mySecondImage = new app.Image('http://placesheen.com/100/100', myImage.x + 10, myImage.y + 10);
最重要的一行是最后一行。请注意,我们如何使用相对于第一张图像的x
和y
坐标初始化新app.Image
。通过使用跟踪此信息的自定义包装类,我们能够轻松访问在各种情况下所需的必要数据。
我希望这有助于您走上正轨!如果您对代码有任何疑问,请告诉我,我很乐意解释。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- nodejs-expressjs上传图像并显示它们
- 使用JSP从服务器检索和显示图像
- 角度:在ng重复上切换图像
- 画廊图像未显示
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- Javascript排序的图像弹出窗口..可以't单独弹出
- 画布数据到图像
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 使图像在单击时展开到不大于浏览器
- Html页面上的多个Base64图像和平滑加载
- UIAutomation放大图像
- 使用javascript在Flash中加载外部图像
- 可以在这里为背景图像设置滤镜吗
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 使用 js 将背景图像设置为 HTML
- Javascript将图像src更改为淡入淡出
- 无法在本地计算机中将画布另存为图像
- 压缩phonegap中ios的图像插件
- 如何在鼠标悬停时在另一个图像上滑动图像.