在这个问题的最后是SSCCE在HTML5画布上显示卫星图像的24000x12000米勒投影。它有几个问题:HTML5画布中的非常高分辨率图像
- 而不是在一个屏幕上显示整个图像,因为我只希望显示一小部分左上角。
- 将图像从因为图像是非常高的分辨率
- 使用的图像可在Wikimedia不应该在显示的规模出现极端像素化受到影响。我将其更名为“world.jpg”。
- 这不是一个普通的Web应用程序,在应用程序执行期间不会下载大图像,因此任何建议不要求下载这么大的图像都没有意义。
- 该应用程序将动态缩放到各种地图区域,从而大图像大小。
- 在真实的代码中,我使用了外部样式表和JavaScript文件。我将它们整合到仅用于SSCCE的html中。
这是代码。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>The Earth</title>
<script type="text/javascript">
function draw() {
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var map = new Image();
map.src = "world.jpg";
map.onload = function() {
var width = window.innerWidth;
var height = window.innerHeight;
ctx.drawImage(map, 0, 0, width, height);
};
}
</script>
<style>
html, body {
width: 100%;
height: 100%;
margin: 0px;
}
#canvas {
width: 100%;
height: 100%;
position: absolute;
top: 0px;
left: 0px;
background-color: rgba(0, 0, 0, 0);
}
</style>
</head>
<body onload="draw();">
<canvas id="canvas"></canvas>
</body>
</html>
你在不同的浏览器上试过了吗?像素化听起来像浏览器代码中的错误或优化。你正在谈论一个非常大的图像(800 MB未压缩),不同浏览器与这些图像的能力可能会有所不同。 – DrV
Chromium和Ubuntu浏览器产生类似的结果。 – KevinRethwisch
这可能是一个非常愚蠢的问题,但你确定你下载了巨大版本的图像。您的链接指向低分辨率预览。图像文件应该是20 MiB左右的JPEG格式。 – DrV