为了账号安全,请及时绑定邮箱和手机立即绑定

请问如何解决canvas 在高清屏下的模糊问题

使用 canvas 画出画布大小的图片时画面很模糊, 就连画出的文字也是模糊的, 有什么解决办法吗?

正在回答

4 回答

我是先将  canvas的大小与  图片大小调成一致   然后在渲染过后的canva用 css的手段 将其限制大小  这样就不会失帧了


0 回复 有任何疑惑可以回复我~
<script>
  var canvasa = document.getElementById("canvasa");
  var contexta = canvasa.getContext("2d");

  var canvasb = document.getElementById("canvasb");
  var contextb = canvasb.getContext("2d");

  var image = new Image();
  window.onload=function(){
    image.src = "img/d.jpg";
    image.onload=function(){
      canvasa.width=image.width;//这个是重点
      canvasa.height=image.width;//这个是重点

      canvasb.width=image.width;//这个是重点
      canvasb.height=image.width;//这个是重点
      contexta.drawImage(image, 0, 0, canvasa.width, canvasa.height)
      canvasa.style.width='600px';//这个是重点
      canvasa.style.height='600px';//这个是重点
    }
  };

  function fillter() {
    console.log(canvasa.style.width)
      var imageData = contexta.getImageData(0,0,canvasa.width,canvasa.height);
      var Data=imageData.data;
      for (var i=0;i<canvasa.width*canvasa.height;i++){
        var r=Data[4*i+0]
        var g=Data[4*i+1]
        var b=Data[4*i+2]

        var rgb=r*0.3+g*0.59+b*0.11

        Data[4*i+0]=rgb;
        Data[4*i+1]=rgb;
        Data[4*i+2]=rgb;
      }
      contextb.putImageData(imageData,0,0,0,0,canvasb.width,canvasb.height);
    canvasb.style.width='600px';//这个是重点
    canvasb.style.height='600px';//这个是重点
  };
</script>


0 回复 有任何疑惑可以回复我~

不知道我分享的这个能不能帮到你     

0 回复 有任何疑惑可以回复我~

(function($){
   var myCanvas = document.getElementById("myCanvas");
   var cxt = myCanvas.getContext("2d");
   var image = new Image();
   // polyfill 提供了这个方法用来获取设备的 pixel ratio
   var getPixelRatio = function(context) {
       var backingStore = context.backingStorePixelRatio ||
               context.webkitBackingStorePixelRatio ||
               context.mozBackingStorePixelRatio ||
               context.msBackingStorePixelRatio ||
               context.oBackingStorePixelRatio ||
               context.backingStorePixelRatio || 1;

       return (window.devicePixelRatio || 1) / backingStore;
   };

   var ratio = getPixelRatio(cxt);


   window.onload = function(){
       image.src = "images/phone.png";
       image.onload = function(){
           // 注意,这里的 width 和 height 变成了 width * ratio 和 height * ratio
           cxt.drawImage(image, 0, 0, myCanvas.width * ratio, myCanvas.height * ratio);
       }
   };

})(jQuery)

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问如何解决canvas 在高清屏下的模糊问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信