• <i id='7kilN'><tr id='7kilN'><dt id='7kilN'><q id='7kilN'><span id='7kilN'><b id='7kilN'><form id='7kilN'><ins id='7kilN'></ins><ul id='7kilN'></ul><sub id='7kilN'></sub></form><legend id='7kilN'></legend><bdo id='7kilN'><pre id='7kilN'><center id='7kilN'></center></pre></bdo></b><th id='7kilN'></th></span></q></dt></tr></i><div id='7kilN'><tfoot id='7kilN'></tfoot><dl id='7kilN'><fieldset id='7kilN'></fieldset></dl></div>
      • <bdo id='7kilN'></bdo><ul id='7kilN'></ul>

      <small id='7kilN'></small><noframes id='7kilN'>

        <legend id='7kilN'><style id='7kilN'><dir id='7kilN'><q id='7kilN'></q></dir></style></legend>

        <tfoot id='7kilN'></tfoot>

        HTML5 Canvas 图像缩放问题

        时间:2023-06-19
      1. <i id='6l28z'><tr id='6l28z'><dt id='6l28z'><q id='6l28z'><span id='6l28z'><b id='6l28z'><form id='6l28z'><ins id='6l28z'></ins><ul id='6l28z'></ul><sub id='6l28z'></sub></form><legend id='6l28z'></legend><bdo id='6l28z'><pre id='6l28z'><center id='6l28z'></center></pre></bdo></b><th id='6l28z'></th></span></q></dt></tr></i><div id='6l28z'><tfoot id='6l28z'></tfoot><dl id='6l28z'><fieldset id='6l28z'></fieldset></dl></div>

          <bdo id='6l28z'></bdo><ul id='6l28z'></ul>
              <legend id='6l28z'><style id='6l28z'><dir id='6l28z'><q id='6l28z'></q></dir></style></legend>
                <tbody id='6l28z'></tbody>
              1. <tfoot id='6l28z'></tfoot>

                <small id='6l28z'></small><noframes id='6l28z'>

                1. 本文介绍了HTML5 Canvas 图像缩放问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在尝试在 HTML5 画布中制作像素艺术主题游戏,作为其中的一部分,我使用以下代码将 10x20 左右大小的图像绘制到画布上:

                  I am trying to make a pixel art themed game in HTML5 canvas, and as part of that I take 10x20 or so sized images and draw them onto the canvas with the following code:

                  ctx.drawImage(image, 20, 20, 100, 200);
                  

                  但是画布使用双三次图像缩放,因此像素艺术图像在 2 倍及以上时看起来很糟糕.有没有办法强制画布使用最近邻缩放或可能使用自定义方法来缩放图像?如果不是,这是否意味着必须事先在 Paint.net 中对图像进行缩放?

                  However the canvas uses bicubic image scaling and hence the pixel art images look terrible at 2x and up. Is there a way to force canvas to use nearest neighbor scaling or possibly use a custom method to scale images? If not does that mean the images have to be scaled beforehand in something like Paint.net?

                  推荐答案

                  选择以下任意一项:

                  通过 JavaScript:

                  ctx.imageSmoothingEnabled = false;
                  

                  来源:http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#image-smoothing

                  在 Gecko 上,您需要

                  On Gecko, you'll need

                  ctx.mozImageSmoothingEnabled = false;
                  

                  来源:https://developer.mozilla.org/en/DOM/CanvasRenderingContext2D#Gecko-specific_attributes

                  在 Webkit 上,您需要

                  On Webkit, you'll need

                  ctx.webkitImageSmoothingEnabled = false;
                  

                  来源:https://bugs.webkit.org/show_bug.cgi?id=82804

                  我找不到其他浏览器支持此属性的信息,所以他们可能不支持它.

                  I couldn't find information on support of this property on other browsers, so they probably don't support it.

                  通过 CSS:

                  另一种选择是在画布上使用一组 CSS 规则.例如:

                  Another option is to use a set of CSS rules on the canvas. For example:

                  <canvas id="c" width="16" height="16"></canvas>
                  <script>
                    var c = document.getElementById("c"),
                        cx = c.getContext("2d"),
                        im = new Image();
                    im.src = "http://stackoverflow.com/favicon.ico"; // 16x16
                    cx.drawImage(im, 0, 0);
                  </script>
                  <style>
                    canvas {
                      width: 32px;
                      height: 32px;
                      image-rendering: optimizeSpeed;
                      image-rendering: crisp-edges;
                      image-rendering: -moz-crisp-edges;
                      image-rendering: -o-crisp-edges;
                      image-rendering: -webkit-optimize-contrast;
                      -ms-interpolation-mode: nearest-neighbor;
                    }
                  </style>
                  

                  来源:https://developer.mozilla.org/en/CSS/图像渲染
                  来源:https://bugs.webkit.org/show_bug.cgi?id=56627

                  通过像素例程:

                  另一种选择是自己使用画布像素操作例程:http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#pixel-manipulation.不过,这还有很多工作要做.

                  Yet another option is to do it yourself using the canvas pixel manipulation routines: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#pixel-manipulation. That's a lot more work, though.

                  这篇关于HTML5 Canvas 图像缩放问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:上传前调整图像大小 - 将画布转换为文件对象 下一篇:尝试使用 HTML5 文件系统将画布 PNG 数据 url 保存到磁盘,但是当我作为 URL 检索时,它无效

                  相关文章

                2. <legend id='gTvVY'><style id='gTvVY'><dir id='gTvVY'><q id='gTvVY'></q></dir></style></legend>

                  <tfoot id='gTvVY'></tfoot>

                  <small id='gTvVY'></small><noframes id='gTvVY'>

                  1. <i id='gTvVY'><tr id='gTvVY'><dt id='gTvVY'><q id='gTvVY'><span id='gTvVY'><b id='gTvVY'><form id='gTvVY'><ins id='gTvVY'></ins><ul id='gTvVY'></ul><sub id='gTvVY'></sub></form><legend id='gTvVY'></legend><bdo id='gTvVY'><pre id='gTvVY'><center id='gTvVY'></center></pre></bdo></b><th id='gTvVY'></th></span></q></dt></tr></i><div id='gTvVY'><tfoot id='gTvVY'></tfoot><dl id='gTvVY'><fieldset id='gTvVY'></fieldset></dl></div>
                      <bdo id='gTvVY'></bdo><ul id='gTvVY'></ul>