【发布时间】:2019-05-08 16:46:20
【问题描述】:
我想从同一张图片中显示四个画布
我正在处理一个需要分成四部分的图像。我不知道图像的实际尺寸,所以我需要它是动态的。我已经做到了这一点,我认为第一部分工作正常,但我不知道为什么它不适用于其余部分。你能指出错误可能在哪里吗?
我是画布的新手,所以我的代码基于这个答案: https://stackoverflow.com/a/8913024/6929416
var image = new Image();
image.crossOrigin = 'anonymous';
image.src = 'https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png';
image.onload = cutImageUp;
function cutImageUp() {
var natW = image.width / 2;
var natH = image.height / 2;
var widthOfOnePiece = jQuery(window).width() / 2;
var heightOfOnePiece = jQuery(window).height() / 2;
var imagePieces = [];
for (var x = 0; x < 2; ++x) {
for (var y = 0; y < 2; ++y) {
var canvas = document.createElement('canvas');
canvas.width = widthOfOnePiece;
canvas.height = heightOfOnePiece;
var context = canvas.getContext('2d');
context.drawImage(image,
x * natW, y * natH,
natW, natH,
x * canvas.width, y * canvas.height,
canvas.width, canvas.height
);
/*drawImage(image,
sx, sy,
sWidth, sHeight,
dx, dy,
dWidth, dHeight);*/
imagePieces.push(canvas.toDataURL());
}
}
// imagePieces now contains data urls of all the pieces of the image
// load one piece onto the page
var anImageElement = document.getElementById('testing');
var anImageElement2 = document.getElementById('testing2');
var anImageElement3 = document.getElementById('testing3');
var anImageElement4 = document.getElementById('testing4');
anImageElement.src = imagePieces[0];
anImageElement2.src = imagePieces[1];
anImageElement3.src = imagePieces[2];
anImageElement4.src = imagePieces[3];
}
img{ border: 1px solid; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section>
<img id="testing" src="">
<img id="testing2" src="">
<img id="testing3" src="">
<img id="testing4" src="">
</section>
我希望画布尺寸适合屏幕,所以我将它们设置为窗口宽度和高度的一半。
【问题讨论】:
-
你需要什么?有什么错误?如果你能再解释一下。
-
只显示第一个画布,其余的都在获取数据,但显然它不是正确的数据,或者我没有正确裁剪原始图像。我需要另一个画布来显示图像的其余部分:第一块:左上角,第二块:右上角,第三块:左下角,第四块:右下角....显示整个图像,但分成四块。
-
能否添加完整的代码(html)。
-
当然,添加了html
-
你的画布在哪里?类似
<canvas id="canvas"></canvas>。我想你应该看看这个mdn canvasdrawImage
标签: javascript canvas html5-canvas