1

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

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

例如

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

我正在使用 php、HTML5 和 Javascript 进行开发。

在将图像发送到服务器之前,我想在客户端做所有事情

有什么帮助吗?

寻找合适的解决方案

4

2 回答 2

3

找到了。

只需使用 css & tag 属性更改画布大小

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

例如:

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

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

于 2012-10-17T10:22:24.953 回答
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
    }
});
});
于 2012-09-14T09:16:22.820 回答