以下是一个可以在Photoshop 24.0.1中使用的脚本,用于自动裁剪图片顶部和底部20像素以外多余的白色空白区域,并将图片垂直居中: ```javascript // 获取当前活动文档 var doc = app.activeDocument; // 获取文档的宽度和高度 var docWidth = doc.width.value; var docHeight = doc.height.value; // 定义要保留的顶部和底部的像素数 var topMargin = 20; var bottomMargin = 20; // 找到顶部和底部多余白色空白区域的边界 var topBound = 0; var bottomBound = docHeight; // 检查顶部多余的白色空白区域 for (var y = topMargin; y < docHeight; y++) { var isAllWhite = true; for (var x = 0; x < docWidth; x++) { var pixelColor = doc.channels[2].getPixel(x, y); if (pixelColor != 255) { isAllWhite = false; break; } } if (!isAllWhite) { topBound = y; break; } } // 检查底部多余的白色空白区域 for (var y = docHeight - bottomMargin - 1; y >= 0; y--) { var isAllWhite = true; for (var x = 0; x < docWidth; x++) { var pixelColor = doc.channels[2].getPixel(x, y); if (pixelColor != 255) { isAllWhite = false; break; } } if (!isAllWhite) { bottomBound = y + 1; break; } } // 计算裁剪区域 var cropTop = Math.max(0, topBound - topMargin); var cropBottom = Math.min(docHeight, bottomBound + bottomMargin); // 裁剪图片 doc.crop(new Rectangle(0, cropTop, docWidth, cropBottom)); // 重新获取裁剪后文档的高度 var newDocHeight = doc.height.value; // 计算垂直居中所需的偏移量 var offsetY = (docHeight - newDocHeight) / 2; // 创建一个新的透明图层 var newLayer = doc.artLayers.add(); newLayer.kind = LayerKind.TRANSPARENT; newLayer.move(doc.layers[0], ElementPlacement.PLACEATBEGINNING); // 移动图像到垂直居中位置 doc.layers[1].translate(0, offsetY); // 合并可见图层 doc.flatten(); ``` 额外需要注意的逻辑点 1. 脚本假设图片的颜色是纯白色(RGB值为255,255,255),如果颜色不是纯白色,可能无法正确识别空白区域。 2. 脚本处理过程中会创建一个新的透明图层用于垂直居中操作,最后会合并可见图层,这可能会影响原始图层结构。 3. 对于大尺寸的图片,脚本的执行时间可能会较长,因为需要逐像素检查颜色。 [2025-06-21 12:06:19 | AI写代码神器 | 713点数解答]