2013-05-06 112 views
3

有没有办法在HTML5中使用CSS3或canvas标签歪斜/扭曲只有一个角?HTML CSS3/Canvas Image Distortion

这里是从Photoshop教程截图如何做到这一点:

Skew in Photoshop

更新:

这是到目前为止,我已经找到了最好的,但它不是100%准确: https://github.com/edankwan/PerspectiveTransform.js

UPDATE2:

我需要这个HTML5版本: http://www.rubenswieringa.com/code/as3/flex/DistortImage/

+0

+1我认为这是一个非常有趣的问题:)我找到了一些信息(你可能会发现它,但在有帮助的情况下)关于[与Kinetics.js一起使用](http://codeslashslashcomment.com/2012/12/12 /动态图像失真HTML5的帆布/)。 – Arkana 2013-05-06 14:38:12

回答

1

这会帮助你。 Link1

而您应该在发布问题前尝试搜索。我搜索了html5帆布歪斜图像,它显示了我很多结果。


更新
看看这个 Fiddle

// Find each img, and replace it with a canvas 
$('img').each(function (index, el) { 
var c,  // new canvas which will replace this img element 
    ctx, // context of new canvas 
    i,  // loop counter 
    tmpCtx, // temp context for doing work 
    h,  // height of the image/new canvas 
    w,  // width of the image/new canvas 
    dh,  // destination height (used in translation) 
    dw,  // destination width (used in translation) 
    dy,  // destination y 
    leftTop,// left top corner position 
    leftBot;// left bottom corner position 

// Get the height/width of the image 
h = el.height; 
w = el.width; 

// Create the canvas and context that will replace the image 
c = $("<canvas height='" + h + "' width='" + w + "'><\/canvas>"); 
ctx = c.get(0).getContext('2d'); 

// Create a temporary work area 
tmpCtx = document.createElement('canvas').getContext('2d'); 

// Draw the image on the temp work area 
for (i = 0; i < h; i++) { 
    dw = Math.abs((w * (h - i) + w * i)/h); 
    tmpCtx.drawImage(el, 
     0, i, w, 1, // sx, sy, sw, sh 
     0, i, dw, 1); // dx, dy, dw, dh 
} 

// Calculate the left corners to be 20% of the height 
leftTop = parseInt(h * .2, 10); 
leftBot = parseInt(h * 1, 10) - leftTop; 

ctx.save(); 

// Draw the image on our real canvas 
for (i = 0; i < w; i++) { 
    dy = (leftTop * (w - i))/w; 
    dh = (leftBot * (w - i) + h * i)/w; 
    ctx.drawImage(tmpCtx.canvas, 
     i, 0, 1, h, 
     i, dy, 1, dh); 
} 

ctx.restore(); 

// Replace the image with the canvas version 
$(el).replaceWith(c); 
}); 
+0

感谢您的链接,但这些链接并没有帮助我。正如你看到所有的例子是“正常”的歪斜教程,像这样做:http://pe-images.s3.amazonaws.com/basics/free-transform/distort-side.gif 或玩透视: http: //pe-images.s3.amazonaws.com/basics/free-transform/perspective-top-left.gif 我需要能够歪斜只有一个角落 – Hese 2013-05-06 11:55:13

+0

感谢您的更新,但仍然是同样的问题 – Hese 2013-05-06 13:22:44