我发现的许多库,比如 Jcrop,实际上并没有进行裁剪,它只创建了一个图像裁剪 UI。然后,它取决于进行实际裁剪的服务器。
如何在不使用任何服务器端代码的情况下使用一些 HTML5 功能 在 客户端 进行图像裁剪。
如果是,是否有一些例子或提示?
原文由 Lorraine Bernard 发布,翻译遵循 CC BY-SA 4.0 许可协议
我发现的许多库,比如 Jcrop,实际上并没有进行裁剪,它只创建了一个图像裁剪 UI。然后,它取决于进行实际裁剪的服务器。
如何在不使用任何服务器端代码的情况下使用一些 HTML5 功能 在 客户端 进行图像裁剪。
如果是,是否有一些例子或提示?
原文由 Lorraine Bernard 发布,翻译遵循 CC BY-SA 4.0 许可协议
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答870 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
是的,这是可以做到的。它基于锚标记的新 HTML5“下载”属性。流程应该是这样的:
href
DOM 中锚标记的属性download="desired-file-name"
)添加到a
元素就是这样。用户所要做的就是单击您的“下载链接”,图像将下载到他的电脑上。当我有机会时,我会带着演示回来。
这是我承诺 的现场演示。它采用 JSFiddle 徽标 并裁剪每个边距 5px。代码如下所示:
忘了说:当然有一个缺点 :(。由于同源策略也适用于图像,如果你想访问图像的数据(通过画布方法
toDataUrl
)。所以您仍然需要一个服务器端代理来为您的图像提供服务,就好像它托管在您的域中一样。虽然我不能为此提供现场演示(出于安全原因),但这里有一个解决同源策略的 PHP 示例代码:
文件
proxy.php
:这样,而不是直接从它的来源加载外部图像:
您可以通过代理加载它:
下面是将图像数据 (base64) 保存到实际图像中的示例 PHP 代码:
文件
save-image.php
:您所要做的就是将图像数据发布到此文件,它会将图像保存到光盘并返回给您现有的图像文件名。
当然,所有这一切可能感觉有点复杂,但我想向您展示您正在努力实现的目标是可能的。