使用 JavaScript 在客户端调整图像大小的最佳和最快方法是什么?
编辑:对不起,我的意思是在客户端显示调整大小的图像的最佳方式..
使用 JavaScript 在客户端调整图像大小的最佳和最快方法是什么?
编辑:对不起,我的意思是在客户端显示调整大小的图像的最佳方式..
简单的。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Client-Side Image Resize (Why?!)</title>
<script type="text/javascript">
window.onload = function() {
var url = "http://www.google.com/intl/en_ALL/images/logo.gif";
var img = new Image();
img.onload = function() {
var w = parseInt((this.width + "").replace(/px/i, ""), 10);
var h = parseInt((this.height + "").replace(/px/i, ""), 10);
// 50% scale
w = (w / 2) + "px";
h = (h / 2) + "px";
var htmlImg = document.createElement("img");
htmlImg.setAttribute("src", url);
htmlImg.setAttribute("width", w);
htmlImg.style.width = w;
htmlImg.setAttribute("height", h);
htmlImg.style.height = h;
document.body.appendChild(htmlImg);
}
img.src = url;
}
</script>
</head>
<body>
<h1>Look, I'm Resized!</h1>
</body>
</html>
如果您对 flash 不太感兴趣,现在使用 flash10,您可以选择在客户端处理上传的文件,然后再将它们发送到服务器。因此,您可以使用隐藏/透明/小型 flash 对象来允许客户端上传他们的图像,让 flash 调整图像大小(它有一些很好的图像处理 api),然后将字节数据发送到服务器。
如果您想在上传之前将图像编码为任何一种格式,as3 核心库有一个 jpeg 和 png 编码器。
如果您没有 flash,您可以随时下载 flex 3(或 4)sdk 并使用 flashdevelop 免费完成这一切 =)
在上传之前调整大小将是一个非常强大的工具。这将减少将图像上传到服务器所需的时间。通常,我们的用户从他们的相机中获得了 5 兆像素的图像,他们不知道如何使用图像编辑器来减小尺寸。我们要上传的是 1500 像素宽的照片,jpg 或 png 压缩到小于 500Kbytes。
这件装备Thin File 声称能够做到,但我还没有检查过。我宁愿找到一种方法来使用 JQuery 来做同样的事情。
flash 10 支持在客户端调整图像大小:
http://www.shift8creative.com/projects/agile-uploader/index.html 上传前调整大小。灵活、紧密的 JavaScript 集成,让您使用任何后端语言,快速、优质的图像。
比展示 JavaScript 集成的主页更好的演示:http: //www.shift8creative.com/projects/agile-uploader/advanced-demo.html
像啤酒一样免费。希望能帮助到你。
我不确定您的意思是实际调整图像大小还是仅设置图像显示的大小。一种是不可能的,另一种是使用 jQuery 设置宽度和高度属性。
如果您想在声明中执行此操作,那么高度和宽度属性很可能是最好的。
如果您想要动画,您可以使用该.animate(...)
命令并将高度和宽度设置为参数。那应该使图像变化平滑过渡。
图像应始终以要显示的尺寸提供。最好在服务器上有多个副本,而不是通过网络复制一个文件并尝试在客户端进行操作。考虑一下:
调整图像大小并不是简单地改变高度/宽度。当您指定的尺寸不同于(通过样式、脚本等)原始图像尺寸时,浏览器将使用本机 API(例如 win32 draw)来正确缩小/放大图像。裁剪图像(丢失部分图像)更容易,但很少需要。