调整映像大小后.js减小由结构序列化的 JSON 的大小
Reduce size of JSON serialized by fabric.js after image resize
使用文件输入和文件读取器将图像加载到结构画布。 我们使用 scaleToWidth 和 scaleToHeight 来让大照片适合画布。
当我使用选择一个大的 3.2MB jpeg 时,图像很好地调整为 1MB,这就是我们想要的。 然后,我们准备数据存储在本地索引数据库上;
canvas.toJSON(); // 4.2MB
canvas.toDataURL(); // 1MB
似乎 toJSON 方法存储了原始的 jpeg。 我们可以在序列化之前减少 jpeg 吗?
我更愿意序列化为 JSON,以便我们将来可以使用其他出色的 Fabric 功能。
我们用 ;
- 将照片加载到织物.js画布
- 然后导出它(将图像缩小到画布尺寸)和
- 将减少的图像数据重新加载回画布上,以及
- 删除原始全尺寸照片。
现在,结构.js画布数据被很好地减少,可以存储在本地索引数据库中;
// camera image // 3.2 MB
canvas.toJSON(); // 1 MB
canvas.toDataURL(); // 1 MB
JavaScript
var reader = new FileReader();
reader.onload = function (event) {
var img = new Image();
var opts = {};
img.onload = function () {
var imgInstance = new fabric.Image(img, opts);
if (imgInstance.getWidth() > canvas.getWidth()) {
imgInstance.scaleToWidth(canvas.getWidth());
}
if (imgInstance.getHeight() > canvas.getHeight()) {
imgInstance.scaleToHeight(canvas.getHeight());
}
canvas.add(imgInstance);
canvas.renderAll();
img = null;
/* now that the image is loaded reduce it's size
so the original large image is not stored */
/* assumes photo is object 0, need to code a function to
find the index otherwise */
var photoObjectIx = 0;
var originalPhotoObject = canvas.getObjects()[photoObjectIx];
var nimg = new Image();
nimg.onload = function () {
var imgInstance = new fabric.Image(nimg, { selectable: false });
canvas.remove(originalPhotoObject);
canvas.add(imgInstance);
canvas.renderAll();
nimg = null;
};
nimg.src = originalPhotoObject.toDataURL();
}
img.src = event.target.result;
}
reader.readAsDataURL(e.target.files[0]);
我个人压缩大 json 数据,然后在服务器上解压缩它......
在JS中放气 - 很好的脚本来gzdeflate
(压缩)JSON
。
然后。。。在 PHP 中:
<?php
$json = gzinflate($HTTP_RAW_POST_DATA);
?>
相关文章:
- Ajax发布表单序列化,发布引号'
- 序列化数据属性中对象的最可靠方法
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 为什么JSON.stringify没有序列化原型值
- 有没有一个Nodejs库可以序列化和反序列化命名组件的路径(比如URL路径名)
- 是否可以在javascript中反序列化java对象
- jQuery Ajax数组序列化错误
- 对象序列化,JAVA,Javascript
- 在jquery中以序列化的形式传递额外的paparameter
- 如何使用angularjs序列化对象
- 使用System从C#集合创建JSON数组.网状物剧本序列化
- javascript中是否有更标准化的方法来转换(序列化)非表单数据以与ajax一起使用
- 在html标记中序列化javascript代码
- 如何在C#中反序列化json对象
- jQueryAJAX-将额外的键/值对推送到序列化的$_POST数组中
- 调整映像大小后.js减小由结构序列化的 JSON 的大小
- 字符串化和解析 JSON(序列化对象结构)和反序列化,将 JSON 字符串转换为对象结构
- 如何序列化全日历源.将循环结构转换为 JSON 错误
- 在Coffeescript: JSON中使用karma出错.串化循环结构序列化
- 如何序列化视图模型并将其推送到 HTML 页面以使用 JSON 结构