好的,我想要:
- 获取外部图片
- 将其导入画布对象中
- 压缩它
- 保存它
我已经成功处理了本地图片,但是试图将外部图片导入画布对象会创建安全性错误。
通过使用PHP,我可以在本地创建外部文件的副本:
file_put_contents("copy.jpg", file_get_contents("http://external.com/image.jpg"));
问题是,外部图像可能相当大-高达3MB,而画布导入尝试在图像下载之前进行。是否有PHP或Javascript代码可以等待文件完全下载?还是有更好的方法来解决这个问题?
imagefetch.php?src=http://example.com/kittens.jpg
。通过一些缓存逻辑,你只需要获取一次图片,这个脚本就可以用作画布源——只有在服务器端获取完成后,图片才会传输到画布上。 - Marc Bvar cvs = document.createElement('canvas'); cvs.width = source_img_obj.naturalWidth; cvs.height = source_img_obj.naturalHeight; var ctx = cvs.getContext("2d").drawImage(source_img_obj, 0, 0); var newImageData = cvs.toDataURL(mime_type, quality/100);
那么imagefetch.php应该放在哪里呢? - Lee<?php header('Content-type: image/jpeg'); readfile('http://example.com/kittens.jpg'); ?>
。 - Marc Bvar ctx = cvs.getContext("2d").drawImage(<?php header('Content-type: image/jpeg'); readfile('http://example.com/kittens.jpg'); ?>, 0, 0);
- Lee