- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 javascript 或 jquery 将图像文件分成四个相等的部分。是否可以将280px x 60px这样的图片分成四等份,然后用base64编码保存到四个变量中?
最佳答案
假设我们有一个像这样的 Base64 图像:
让我们去获取那 4 张图片吧!
var canvas = document.createElement('canvas');
var ctx = canvas.getContext("2d");
var parts = [];
var img = new Image();
img.onload = split_4;
img.src = "data:image/png;base64,iVBORw0KGgoAAAA.......................etc"
如果我们需要切片的图像是260×80意味着我们需要将我们的canvas元素设置为该尺寸的1/4 :
var w2 = img.width / 2, // 130
h2 = img.height / 2; // 40
canvas.width = w2;
canvas.height = h2;
// 0 0 1.iteration
// -130 0 2.iteration
// 0 -40 3.iteration
// -130 -40 4.iteration
在每次循环迭代中,我们只需将检索到的 Canvas 数据推送到我们的 parts
数组中:
for(var i=0; i<4; i++){
var x = (-w2*i) % (w2*2), // New X position
y = (h2*i)<=h2? 0 : -h2 ; // New Y position
ctx.drawImage(this, x, y, w2*2, h2*2); // imgObject, X, Y, width, height
parts.push( canvas.toDataURL() ); // ("image/jpeg") for jpeg
}
现在始终在 onload
函数中,您可以从数组中检索所有图像部分:
console.log( parts ); // ["data:image/png;base64,iV...z9d/oBHAAAAAElFTkSuQmCC",
// "data:image/png;base64,iV...yVhNNW1AAAAAElFTkSuQmCC",
// "data:image/png;base64,iV...Q2FoAAAAABJRU5ErkJggg==",
// "data:image/png;base64,iV...RQXgXQAAAAASUVORK5CYII="]
要仅获取(即)第一张图像,请使用:parts[0];
var canvas = document.createElement('canvas'), // In memory canvas
ctx = canvas.getContext("2d"),
parts = [], // to push into oud base64 strings
img = new Image();
function split_4() {
var w2 = img.width / 2,
h2 = img.height / 2;
for (var i = 0; i < 4; i++) {
var x = (-w2 * i) % (w2 * 2),
y = (h2 * i) <= h2 ? 0 : -h2;
canvas.width = w2;
canvas.height = h2;
ctx.drawImage(this, x, y, w2 * 2, h2 * 2); // img, x, y, w, h
parts.push(canvas.toDataURL()); // ("image/jpeg") for jpeg
//>> JUST FOR DEMO
var slicedImage = document.createElement("img")
slicedImage.src = parts[i];
var div = document.getElementById("test");
div.appendChild(slicedImage);
//<< JUST FOR DEMO
}
console.log(parts);
};
img.onload = split_4;
img.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQQAAABQCAYAAAD/YAtfAAAD6klEQVR4nO3c6Y0jIRCGYWdCKIRCKIRCKIRCKLU/dlxdzdDQF7ZHfkt6pB3uktbfzmqPhzxEAEAeIo93PwDA5yAQACgCAYAiEAAoAgGAIhAAKAIBgCIQACgCAYAiEAAoAgGAIhAAKAIBgCIQACgCAYAiEAAoAgGAIhAAKAIBgCIQACgCAYAiEAAoAgGAIhAAKAIBgCIQACgCAYAiEAAoAgGAIhAAKAJhJiciSUSK/K8iIuHA/vRzxrv7OMOLSJal8s/Yu9+FLgJhFidLENSVduxPZn0YrI2yDp345t7DRt+jXj6tjy9EIMxSZKki6w+4yPiDYfe6ztos7Spv6ttX70iN3v0f6ONLEQgzBFkq7xi3vKzLd+5JZl2R9W9PRPZ9J3I3+6ZoxmPnXZ/Yx5ciEGbwsvyEdtWcrdbebOZj5w5XneUG46/y7Lu+276r/IE+vhSBMJOvvnayrnp9MHN5cLZdm6q5ZObCi3vu9dea+9Q+vhSB8EpBliqN+WLm/eCsZNaGzj1px7tsZTOeq7k9Pdo9tge/ccedfeAyAuFVnKw/8LGaj2Yuyf8PkO+cZ89yjbueVXa8rS63Mb6nz2DW55+znKyDIkzqA5cRCK+SZV2umi9mzv44N9bW6+t5V501eluU3x/YUL0hHug1ynbV59zZBy4jEF4hyrpiNe+lX7lxpq3WnaP5mqvuS+Zrd7BfJ+0/RsyNs+7uA5cQCLN5WVdurInVmiTjv7dgq3XvaL6lvvP5lqM9l6rfbL4uL+gDpxEIsxVZl2usyWY+mfFkxnO1x1br3tF8i5Pf1XpvT9jRS5zcB04jEGaKsq6wsa6YNd6MezNeOntcNec6+0ay2ZtP9Gz3b/Viz53VB04hEGZxsq7UWWtr71wx465zd7nw5tbZI0d7mdEHTiMQZkmyVBmstbV3zp4fqrlg5tKBN0f5XfFg30d7mdEHTiMQZrHlB2vLxlpvxku1J5q5VM0lMxd3vteZPVnW3/q7A30f7eXuPnAJgTBDkKXyjvXJrE87xh9y/78BiGZPqHqIB3q352z1Ys+7uw9cQiDMkGWpLMsfI1rRrHeyrizjv8j0kPv+lWCs7nqO26rfvOVML3f1gcsIhBn2lt0TOuti566ysafI/l9VbSUzngZv3tLrJUzsA5cRCDMU2Vf1Pi/n/tuxaO4scvy/XrNl7/M73rzlTC9X+8BlBAIARSAAUAQCAEUgAFAEAgBFIABQBAIARSAAUAQCAEUgAFAEAgBFIABQBAIARSAAUAQCAEUgAFAEAgBFIABQBAIARSAAUAQCAEUgAFAEAgBFIABQBAIARSAAUAQCAEUgAFAEAgD1DxOuXDVQeFT8AAAAAElFTkSuQmCC";
img {
margin: 10px;
}
<div id="test"></div>
关于javascript - 将 base64 图像拆分为多个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25463416/
我有一个数组列表: ArrayList allText = new ArrayList(); 其内容是这样的: [Alabama - Montgomery, Alaska - Juneau, Ariz
我有一个 timestamp 格式的开始和结束时间。我想将它们分成多个时间段,例如 1 小时。 $t1 = strtotime('2010-05-06 12:00:00'); $t2 = strtot
我需要将 span10 分成 3 列,但我无法将它们排列起来。我应该在 span10 中添加一个 span12 还是使用 offset 还是??
我有一个时间序列。我想从早上 8 点到第二天早上 7:59 分成 24 小时的区 block 。我知道如何按日期分组,但我尝试过使用 TimeGroupers 和 DateOffsets 处理这个 8
我收到“街道号码邮政编码城市”形式的地址(作为字符串)。我想要做的是将街道和号码与邮政编码和城市分开。通常你可以按空格分割。但有些街道名称中也有空格,例如:“Emile Van Ermengemlaa
我有一个用户列表。其中一些用户处于第一状态,而其他用户处于第二状态。所以我想要的是将这个列表显示为首先,它按排序顺序显示存在 = 1 的用户,然后按排序顺序显示存在 = 2 的用户。这里的排序是根据用
我感觉我搜索了整个网络,但找不到一种方法将不同高度的 div 很好地划分为 3 列,就像 http://www.ing.nl 上那样 headertekst headerteksttesth
Bootstrap 3 按钮下拉菜单出现问题。你可以在这里看到我的两个例子: http://www.bootply.com/W1dLusilMk http://www.bootply.com/GGBv
我在 php 中执行以下操作 foreach($QuestionAsekd as $k => $v){ $grp_name = $v['NAME']; $groupValues[$gr
我找到了一种用pandas解析html的绝妙方法。我的数据格式有点奇怪(见下文)。我想将这些数据拆分为 2 个单独的数据帧。 注意每个单元格如何由,分隔...是否有任何真正有效的方法来分割所有这些单元
HTML 看起来像这样,但我不允许对其进行更改。我只能编写 CSS 将其变成 2 列。 Povezave www.behance.net www.kiberpipa.org www.o
假设我有以下数据框“A” utilization utilization_billable service 1
我需要将 2 个文本框拉伸(stretch)到 100% 的浏览器宽度,以及一个提交按钮。所有三个都应该在一行中,我试图拉伸(stretch)它但它没有发生......有什么想法吗? 代码: .sea
我是一名优秀的程序员,十分优秀!