是否有一些客户端组件(jquery/swf)可以在浏览器中上传和裁剪(用户应该能够选择要裁剪的区域)图像,然后将裁剪的图像发送到服务器?
我在 asp.net-mvc 上(不确定是否重要)
是否有一些客户端组件(jquery/swf)可以在浏览器中上传和裁剪(用户应该能够选择要裁剪的区域)图像,然后将裁剪的图像发送到服务器?
我在 asp.net-mvc 上(不确定是否重要)
Jcrop 是将图像裁剪功能添加到 Web 应用程序的快速简便的方法。它结合了典型 jQuery 插件的易用性和强大的跨平台 DHTML 裁剪引擎,忠实于熟悉的桌面图形应用程序。
Jcrop Image Plugin 可能擅长显示裁剪 UI 并在浏览器中获取裁剪后的坐标。但是,它实际上并没有裁剪图像。因此,裁剪过程是在服务器上完成的,这对您的服务器性能非常不利。
这里的答案介绍了一个 Jcrop 扩展,它可以在浏览器中裁剪图像并将裁剪后的图像上传到服务器。“它使用 Jcrop 插件来裁剪图像,在 HTML 5 画布元素中绘制裁剪区域,将画布转换为 blob 并通过 AJAX 将图像文件上传到服务器”。
最重要的部分是 canvasToBlob 函数,它将 HTML 5 画布元素转换为可以作为图像上传到服务器的 Blob 类型。不幸的是,此方法仅适用于 AJAX,无法直接提交表单,因为无法将 blob 作为输入文件放入标准 HTML 表单元素中。实际上,我们在裁剪图片时很少使用表单直接提交图片。
您需要结合裁剪 UI 和上传器来完成这个复杂的任务。裁剪 UI 负责显示裁剪 UI 并给出裁剪坐标,上传者裁剪和调整图像大小,将其转换为 blob 并上传到服务器。
裁剪 UI 很常见,但上传者很难找到。我推荐易于使用的裁剪 UI ImgAreaSelect以及简单且可扩展但不是免费的Uploader 。