2016-08-25 2 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); 

и может помочь мне спасибо (Извините за мой английский)

+0

Необходимо загрузить изображение. Использовать 'image.onload = function() {blah blah ... drawIm возраст (.... ' – Blindman67

+0

Изображение пропускает видимую часть 8x8, mb нужно немного настроить через перевод –

ответ

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

масштабирование @o_flyer от 434 до 8 пикселей будет очень низкого качества. Вы можете получить небольшое улучшение, уменьшая шаг за шагом. Половина шкалы, визуализируйте изображение, затем масштабируйте изображение, сделанное на половину, до тех пор, пока вы не достигнете нужного размера. Но это все равно будет очень плохо. Вы должны сделать масштабирование исходного изображения через фотошоп какого-то высококачественного редактора изображений. – Blindman67

Смежные вопросы