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