Javascript 如何使用JS加载本地图像?

Javascript 如何使用JS加载本地图像?,javascript,Javascript,我想在脚本中加载两个单独的图像。我已经通过以下方式完成了: <img src="iphone4.png" id="img1"> <img src="screenshot.png" id="img2"> <script> window.onload = function () { var img1 = document.getElementById('img1'); var img2 = docu

我想在脚本中加载两个单独的图像。我已经通过以下方式完成了:

<img src="iphone4.png" id="img1">
<img src="screenshot.png" id="img2">

<script>
        window.onload = function () {
            var img1 = document.getElementById('img1');
            var img2 = document.getElementById('img2');
</script>
但这并不奏效。 有一些常识的人能给我一些关于这个问题的意见吗

编辑: 这就是markup/JS现在的样子,图像仍然显示,图像的最终合并不会显示。我得到的错误是:

IndexSizeError: Index or size is negative or greater than the allowed amount
[Stanna vid fel]    

var image1 = context.getImageData(0, 0, width, height);
这就是语法:

<body>
    <img src="" id="img1">
    <img src="" id="img2">
    <p>Blended image<br><canvas id="canvas"></canvas></p>
    <script>
        window.onload = function () {
            var img1 = document.getElementById('img1');
            var img2 = document.getElementById('img2');

            img1.src = "iphone4.png";
            img2.src = "screenshot.png";

            var canvas = document.getElementById("canvas");
            var context = canvas.getContext("2d");
            var width = img1.width;
            var height = img1.height;
            canvas.width = width;
            canvas.height = height;

            var pixels = 4 * width * height;
            context.drawImage(img1, 0, 0);
            var image1 = context.getImageData(0, 0, width, height);
            var imageData1 = image1.data;
            context.drawImage(img2, 73, 265);
            var image2 = context.getImageData(0, 0, width, height);
            var imageData2 = image2.data;
            while (pixels--) {
                imageData1[pixels] = imageData1[pixels] * 0 + imageData2[pixels] * 1;
            }
            image1.data = imageData1;
            context.putImageData(image1, 0, 0);
        };
    </script>

混合图像

window.onload=函数(){ var img1=document.getElementById('img1'); var img2=document.getElementById('img2'); img1.src=“iphone4.png”; img2.src=“screenshot.png”; var canvas=document.getElementById(“canvas”); var context=canvas.getContext(“2d”); 变量宽度=img1.width; var高度=img1.height; 画布宽度=宽度; canvas.height=高度; 可变像素=4*宽度*高度; drawImage(img1,0,0); var image1=context.getImageData(0,0,宽度,高度); var imageData1=image1.data; 背景。drawImage(img2,73265); var image2=context.getImageData(0,0,宽度,高度); var imageData2=image2.data; 而(像素--){ imageData1[像素]=imageData1[像素]*0+imageData2[像素]*1; } image1.data=imageData1; putImageData(image1,0,0); };
编辑:不要这样做,您的图像将不会显示

        document.body.append(img1);

编辑:不要这样做,您的图像将不会显示

        document.body.append(img1);


HTML5有一种方法,但它仍然需要用户将文件放入放置目标或使用方框

使用文件API,您可以读取文件,并可能对其进行解码

但是,实际上读取文件blob并在本地显示它可能很棘手。您可以使用FileReader.readAsDataURL方法将内容设置为图像标记的data:URL

示例

$('#f').on('change', function(ev) {
    var f = ev.target.files[0];
    var fr = new FileReader();

fr.onload = function(ev2) {
    console.dir(ev2);
    $('#i').attr('src', ev2.target.result);
};

fr.readAsDataURL(f);
});​
请参见此处的工作小提琴:
HTML5有一种方法,但它仍然需要用户将文件放入放置目标或使用方框

使用文件API,您可以读取文件,并可能对其进行解码

但是,实际上读取文件blob并在本地显示它可能很棘手。您可以使用FileReader.readAsDataURL方法将内容设置为图像标记的data:URL

示例

$('#f').on('change', function(ev) {
    var f = ev.target.files[0];
    var fr = new FileReader();

fr.onload = function(ev2) {
    console.dir(ev2);
    $('#i').attr('src', ev2.target.result);
};

fr.readAsDataURL(f);
});​
请参见此处的工作小提琴: 使用jquery:

$('#my_image').attr('src','image.jpg');
使用javasript:

document.getElementById("my_image").src="image.jpg";
只需使用jquery检查图像的路径

$('#my_image').attr('src','image.jpg');
使用javasript:

document.getElementById("my_image").src="image.jpg";

只需检查图像的路径即可

您可以创建一个
图像
,而无需在标记中添加实际标记:

var img = new Image();
img.src = 'iphone4.png';
//use img however you want

希望这有帮助。

您可以创建一个
图像
,而无需在标记中添加实际标记:

var img = new Image();
img.src = 'iphone4.png';
//use img however you want

希望这有帮助。

在head block中编写以下代码

<script>
window.onload = function () {
           document.getElementById("img1").src="iphone4.png";
           document.getElementById("img2").src="screenshot.png";
}
</script>

window.onload=函数(){
document.getElementById(“img1”).src=“iphone4.png”;
document.getElementById(“img2”).src=“screenshot.png”;
}
这会奏效的


谢谢

在标题栏中写下下面的代码

<script>
window.onload = function () {
           document.getElementById("img1").src="iphone4.png";
           document.getElementById("img2").src="screenshot.png";
}
</script>

window.onload=函数(){
document.getElementById(“img1”).src=“iphone4.png”;
document.getElementById(“img2”).src=“screenshot.png”;
}
这会奏效的

谢谢

“我正在做的是使用JS合并两个图像”

您的问题可能是因为您正在尝试绘制尚未加载的图像。为了避免此问题,您可以动态创建图像,并设置其
src
属性以开始加载图像,并侦听图像的加载事件以了解它们何时完全加载,以便安全地执行合并

我还没有测试过代码,但它应该会给你一个想法

var图像=[
“iphone4.png”,
'screenshot.png'
],
len=图像长度,
i=0,
loadedCount=0,
img;
对于(;i
“我正在做的是使用JS合并两个图像”

您的问题可能是因为您正在尝试绘制尚未加载的图像。为了避免此问题,您可以动态创建图像,并设置其
src
属性以开始加载图像,并侦听图像的加载事件以了解它们何时完全加载,以便安全地执行合并

我还没有测试过代码,但它应该会给你一个想法

var图像=[
“iphone4.png”,
'screenshot.png'
],
len=图像长度,
i=0,
loadedCount=0,
img;
对于(;i
但这似乎仍然显示[img1]和[img2]标记中的图像?如果我错了,请纠正我,但这看起来也会在标记中的body(或新div)下添加标记并使其可见