J'essaie d'écrire un plugin jQuery qui aura des fonctionnalités similaires à l'éditeur de produit Flash sur Zazzle.com. Ce que j'ai besoin de savoir, c'est comment, en utilisant la fonction canvas context.drawImage()
, je peux insérer une image et la redimensionner pour l'adapter à la toile sans la déformer.Redimensionner l'image proportionnellement pour tenir dans la toile HTML5
L'image est de 500x500px, tout comme la toile, mais pour une raison quelconque, lorsque je règle 500x500 sur les dimentions d'image, elle est trop grande.
Voici mon code complet à ce jour:
(function($) {
jQuery.fn.productEditor = function(options) {
var defaults = {
'id' : 'productEditor',
'width' : '500px',
'height' : '500px',
'bgImage' : 'http://www.wattzup.com/projects/jQuery-product-editor/sampleProduct.jpg'
};
return this.each(function() {
var $this = $(this)
var options = $.extend(defaults, options);
// Create canvas
var canvas = document.createElement('canvas');
// Check if their browser supports the canvas element
if(canvas.getContext) {
// Canvas defaults
var context = canvas.getContext('2d');
var bgImage = new Image();
bgImage.src = options.bgImage;
bgImage.onload = function() {
// Draw the image on the canvas
context.drawImage(bgImage, 0, 0, options.width, options.height);
}
// Add the canvas to our element
$this.append(canvas);
// Set ID of canvas
$(canvas).attr('id', options.id).css({ width: options.width, height: options.height });
}
// If canvas is not supported show an image that says so
else {
alert('Canvas not supported!');
}
});
};
})(jQuery);
Toute autre critique constructive aussi bien accueillie.