如何删除重复的图像而不显示:无
How can I remove a duplicate image without display:none?
我正在制作一个网站标题的分层图像。这将有单独的组件以各种简单的方式动画,有些需要混合模式,所以我显然必须使用HTML5画布。
我做了一些关于如何插入图像的研究,我发现了这个:
$(document).ready(function(){
var canvas = document.getElementById("myCanvasName");
var ctx = canvas.getContext("2d");
var image = document.getElementById("myImageToInsert");
canvas.height = image.offsetHeight;
canvas.width = image.offsetWidth; //to set the canvas's dimensions, to allow for a responsive design
ctx.drawImage(base,0,0);
});
非常简单,我抓取HTML <img>
标记,并将其包含在画布中。问题是,现在我的标记中有两个图像:画布和画布正在绘制的<img>
标签。这显然是不可取的。
如果我尝试在<img>
上设置display:none
,它也会影响画布元素(并导致它不显示图像)。
我的问题:我如何将图像导入画布而不使用标记,或者我如何隐藏源图像?
这是一个小提琴,你可以看到有两个图像(一个画布),显示不将影响他们两个。(即使它只在image标签上调用):http://jsfiddle.net/9z9x1gb7/
实际问题是display:none
的图像具有零高度和宽度。如果你将画布设置为固定尺寸(例如500 x 500),你将看到图像。至于如何在不显示图像的情况下获取图像的宽度和高度,您可能需要查看以下内容:
jQuery -获取元素不可见时的宽度(Display: None)
如何获得隐藏图像的高度?
使用jQuery预加载图片
- 你需要确保你的图像是实际加载之前绘制它。$(document).ready(…)从不等待其他资源加载。
- 你需要准确地获得图像的尺寸。如果你把它建立在DOM树中已有的东西的基础上,好吧,这可能是可行的,但是考虑到所有的样式约束等等……祝你好运!每当我想在画布上绘制一些图像时,我总是创建一个新图像,而不需要任何外部库。
见下文:
$(document).ready(function() {
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var duckOrg = document.getElementById("duckImg");
var duck = new Image();
duck.onload = function() {
canvas.height = duck.height;
canvas.width = duck.width; //to set the canvas's dimensions, to allow for a responsive design
//alert(duckOrg.src);
ctx.drawImage(duck, 0, 0);
}
duck.src = duckOrg.src;
});
你可以这样尝试:
$(document).ready(function () {
var canvas = document.getElementById("myCanvas"),
ctx = canvas.getContext("2d"),
duck = new Image(),
updateCanvas = function () {
canvas.height = duck.height;
canvas.width = duck.width; //to set the canvas's dimensions, to allow for a responsive design
ctx.drawImage(duck, 0, 0);
};
duck.onload = updateCanvas;
duck.src = "http://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Anas_platyrhynchos_male_female_quadrat.jpg/640px-Anas_platyrhynchos_male_female_quadrat.jpg";
});
在HTML中:
<canvas id="myCanvas"></canvas>
希望这对你有帮助!
您应该能够在JS中完成以下操作,仅使用HTML标记中的画布:
$(document).ready(function(){
var myImg = new Image;
myImg.src = "http://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Anas_platyrhynchos_male_female_quadrat.jpg/640px-Anas_platyrhynchos_male_female_quadrat.jpg";
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
canvas.height = myImg.naturalHeight;
canvas.width = myImg.naturalWidth;
ctx.drawImage(myImg,0,0);
});
http://jsfiddle.net/9z9x1gb7/1/相关文章:
- 非常大的图像显示渐进
- CSS Html使图像显示在单选按钮的选项上(单选按钮被CSS隐藏)
- JS照片库.使大图像显示和缩略图可单击
- 多个图像显示带有动态创建的画布的最后一个图像并分配给图像
- 当我在jquery/javascript中单击按钮时加载图像显示
- React图像显示
- 随机图像显示,无重复,使用Javascript
- 将跨度内容(图像url)转换为图像(显示)
- 随机图像显示不止一次
- 节点.js 使用 Multer 上传图像显示未定义
- 范围滑块,用于更改轨道上方对齐圆的直径并使对齐的图像显示在下方
- 使用图像显示和隐藏
- 使用 JavaScript 将文件夹中的图库图像显示到网页中
- 画布到图像显示为无图像(空白)
- 传单不会将本地图像显示为叠加
- 切换此元素时,如何使不同的图像显示,而不是文本
- 在页面加载时将图像显示为弹出窗口
- 如何在模糊浏览器主窗口时将图像显示为叠加层
- iOS在画布上绘制图像显示:无会导致内存泄漏
- JavaScript 图像显示不起作用