HTML5在画布中加载较小的图像并保存实际大小的图像

时间:2012-09-14 09:12:15

标签: php javascript html5-canvas

我正在使用HTML 5 Canvas& amp;创建一个图像编辑工具。 Java脚本。我通过缩放图像以适应画布,应用一些过滤器并将图像保存到磁盘来将大图像加载到画布。

问题是当我将画布保存到图像时,它将存储具有画布大小的图像。我想要的是使用应用过滤器将图像存储到其实际尺寸。 Flickr使用的方法相同。

例如

如果图像是1000px X 1000px并显示在300px X 300px画布中,我将图像加载到画布上为300px X 300px。保存时我仍然想用1000px X 1000px dimesnion保存图像。怎么做?

我正在使用php,HTML5和amp;的JavaScript。

我希望在将图像发送到服务器之前在客户端执行所有操作

任何帮助?

寻找合适的解决方案

2 个答案:

答案 0 :(得分:3)

找到它。

只需使用css&更改画布大小即可标签属性

CSS宽度&高度调整画布的显示区域  标签宽度&高度是实际图像宽度&高度

例如:

#canvas { width:500px; height:350px}
<canvas id="canvas" width="1024" height="760"></canvas>

上面将显示500px x 350px块的画布。 但是当画布保存到图像时,它将保存为图像大小1024x760

答案 1 :(得分:1)

使用此链接。它有完整的教程。

http://www.sitepoint.com/image-resizing-php/

此图片的尺寸会相应改变。

<强>更新

对于客户端

http://ericjuden.com/2009/07/jquery-image-resize/

$(document).ready(function() {
$('.story-small img').each(function() {
    var maxWidth = 100; // Max width for the image
    var maxHeight = 100;    // Max height for the image
    var ratio = 0;  // Used for aspect ratio
    var width = $(this).width();    // Current image width
    var height = $(this).height();  // Current image height

    // Check if the current width is larger than the max
    if(width > maxWidth){
        ratio = maxWidth / width;   // get ratio for scaling image
        $(this).css("width", maxWidth); // Set new width
        $(this).css("height", height * ratio);  // Scale height based on ratio
        height = height * ratio;    // Reset height to match scaled image
        width = width * ratio;    // Reset width to match scaled image
    }

    // Check if current height is larger than max
    if(height > maxHeight){
        ratio = maxHeight / height; // get ratio for scaling image
        $(this).css("height", maxHeight);   // Set new height
        $(this).css("width", width * ratio);    // Scale width based on ratio
        width = width * ratio;    // Reset width to match scaled image
    }
});
});