0
A
回答
1
照片图像我做了这样的事情使用jimp,但大概可以简洁得多......
var Jimp = require("jimp");
/**
* @param filename - input file
* @param numSlices - how many slices
* @param attenuation - how quickly slices get smaller
*/
function sliceImage(filename, numSlices, attenuation) {
Jimp.read(filename).then(image => {
let w = image.bitmap.width;
let h = image.bitmap.height;
let sliceWidth = w/numSlices;
let midlane = w/2;
let slack = 0.001;
let slices = [];
function slicePair(left, right) {
if (left < (0 - slack) || (right - sliceWidth) > (w + slack)) {
return;
}
let leftSlice = image.clone();
let rightSlice = image.clone();
leftSlice.crop(left, 0, sliceWidth, h);
rightSlice.crop(right - sliceWidth, 0, sliceWidth, h);
slices.push(leftSlice);
slices.push(rightSlice);
slicePair(left - sliceWidth, right + sliceWidth);
}
function doSlice() {
if (numSlices % 2 == 0) {
slicePair(midlane - sliceWidth, midlane + sliceWidth);
} else {
let middle = image.clone();
middle.crop(midlane - (sliceWidth/2), 0, sliceWidth, h);
slices.push(middle);
slicePair(midlane - (1.5 * sliceWidth), midlane + (1.5 * sliceWidth));
}
}
function overlay() {
let canvas = image.clone().brightness(1);
let odd = !(slices.length % 2 === 0);
let adjust = odd ? (sliceWidth/2) : 0;
slices.reverse();
if (odd) {
let middle = slices.pop();
canvas.composite(middle, (midlane - (sliceWidth/2)), 0);
}
for (let i = 0; i < (slices.length + 2); i++) {
let k = odd ? (i + 1) : i;
let left = slices.pop().crop(0, attenuation * k, sliceWidth, (h - (attenuation * k) * 2));
let right = slices.pop().crop(0, attenuation * k, sliceWidth, (h - (attenuation * k) * 2));
canvas.composite(left, (midlane - ((i + 1) * sliceWidth)) - adjust, (attenuation * k));
canvas.composite(right, (midlane + (i * sliceWidth)) + adjust, (attenuation * k));
}
canvas.write("result.jpg");
return canvas;
}
doSlice();
return overlay();
});
}
相关问题
- 1. 将图像拆分为块
- 2. Java - 将图像拆分为拼图
- 3. 将文件拆分为块
- 4. 将base64行拆分为块
- 5. 将图像块划分为两个块
- 6. 将图像分解为图块
- 7. NodeJS流拆分
- 8. 如何将图像拆分为多个较小的图像
- 9. Perl将二进制数据拆分为块拆分
- 10. 将three.js纹理拆分为大块
- 11. 将字符串拆分为块。
- 12. 将n个值拆分为m个块
- 13. 将一个向量拆分为R块
- 14. 将Android项目拆分为模块?
- 15. php - 将日期范围拆分为块
- 16. 问:将图像分块Python
- 17. java将图像拆分为2部分失去质量
- 18. 如何在Python中将图像拆分为多个部分
- 19. 将图像拆分成片段
- 20. 将数据帧拆分为块并将名称分配给块中的块
- 21. NSData拆分块
- 22. 将PHP拆分成分离块
- 23. Pygame中的拆分图像
- 24. 像设置拆分视图
- 25. 将图像转换为字节并拆分成片段
- 26. 拆分PDF并将第一页转换为图像使用PHP
- 27. 将一个背景图像拆分为两个div
- 28. 使用CSS将标题页面拆分为图像
- 29. 使用c#2008将PDF文件拆分为图像文件?
- 30. 根据内容将每个块拆分为块
这附近什么我想要做的,但它产生了一个中间只有1片的图像。我试图编辑脚本以获得我想要的结果,但我无法找到需要更改的部分 – pkberlin