2016-08-25 18 views
0

私は自分の画像を回転させようとしています。イメージの実際のサイズ - 300x434は8x8に変換されます。画像の縮尺と回転JavaScript

var c = dc.create('canvas', { 
     id:'canvas_'+_id, 
     width:8, // HERE!!! 8x8 
     height:8, // HERE!!! 8x8 
    }, dom.byId('canses')); 

    var ctx = dom.byId('canvas_'+_id).getContext('2d'); 
    var img = new Image(); 
    img.src = res; 

    ctx.translate(img.width/2, img.height/2); 
    ctx.rotate(rot*(Math.PI/180)); 
    ctx.translate(-img.width/2, -img.height/2); 
    ctx.drawImage(img, 0, 0, 8, 8); // HERE!!! 8x8 

しかし、キャンバスは空です。(使用初期サイズと、すべてが正常に動作

var c = dc.create('canvas', { 
     id:'canvas_'+_id, 
     width:300, 
     height:434, 
    }, dom.byId('canses')); 

    var ctx = dom.byId('canvas_'+_id).getContext('2d'); 
    var img = new Image(); 
    img.src = res; 

    ctx.translate(img.width/2, img.height/2); 
    ctx.rotate(rot*(Math.PI/180)); 
    ctx.translate(-img.width/2, -img.height/2); 
    ctx.drawImage(img, 0, 0); 

uが私を助けることができます)私の英語のおかげで(申し訳ありません

+0

イメージが読み込まれるまで待つ必要があります。イメージを読み込むのを待つ必要があります。{blah blah ... drawIm年齢(.... ' – Blindman67

+0

イメージは目に見える部分が8x8に見当たらないので、少し翻訳して調整する必要があります。 –

答えて

0

レンダリングするために。。?!その中心を中心に回転した固定サイズの画像

// image is the image 
// ctx is the context 
var x = 100; // where the center of the image will be 
var y = 100; 
var width = 8; // size to draw 
var height = 8; 
// scale and translate 
ctx.setTransform(width/image.width, 0, 0, height/image.height, x, y); 
// rotate image 
ctx.rotate(rot); 
// draw image 
ctx.drawImage(image, -image.width/2,-image.height/2); 

// resets the default transform; 
ctx.setTransform(1,0,0,1,0,0) 
+0

何とか品質を向上させることができますか?私は画像を比較するこの方法を使用し、回転された画像の品質が失われます。 –

+0

ありがとうございました!できます! –

+0

434〜8ピクセルの@o_flyerスケーリングは非常に品質が悪いです。あなたは段階的に縮小することでわずかな改善を得ることができます。スケールを半分にしてイメージをレンダリングし、レンダーしたイメージを再び半分にスケ​​ーリングして、必要なサイズになるまでします。しかし、それはまだ非常に貧しいです。あなたはいくつかの高品質画像エディタのPhotoshopを介してソース画像にスケーリングを行う必要があります。 – Blindman67