通过边缘函数对源站图片进行转换,例如剪裁、缩放、旋转、添加水印等。
代码示例
实现效果:函数对源站图片进行处理。
语言类型:
JavaScript
代码示例:
// 将图片转换为PNG格式
async function imageFormat(request) {
return fetch(request, {
// 图像处理指令数组(支持多步骤操作)
image: [
{
action: 'format', // 动作类型:格式转换
option: {
param: {
f: 'png', // 目标格式参数(png/jpeg/webp等)
},
},
},
],
});
}
// 使用自定义缩放模式,固定宽度为200px,高度按比例自动计算
async function imageResize(request) {
return fetch(request, {
image: [
{
action: 'resize', // 动作类型:调整尺寸
option: {
mode: 'custom', // 模式:自定义参数(非cover/contain等预设模式)
param: {
p: 90, // 图片质量(0-100,值越大质量越高)
fw: 200, // 固定宽度(单位:像素)
// fh: 200 // 可选:固定高度(若设置会覆盖自动计算)
},
},
},
],
});
}
// 旋转图片180度
async function imageRotate(request) {
return fetch(request, {
image: [
{
action: 'rotate', // 动作类型:旋转
option: {
mode: 'custom', // 模式:自定义参数
param: {
a: 180, // 旋转角度(0-360,顺时针方向)
},
},
},
],
});
}
async function handleRequest(request) {
const url = new URL(request.url);
const path = url.pathname;
// 根据路径选择处理逻辑
if (path === PATH1) { // 匹配格式转换路径
return await imageFormat(request);
} else if (path === PATH2) { // 匹配缩放路径
return await imageResize(request);
} else if (path === PATH3) { // 匹配旋转路径
return await imageRotate(request);
}
// 无匹配路径时返回404
return new Response('Not Found', { status: 404 });
}
export default {
async fetch(request) {
// 将请求交给主处理函数并返回结果
return handleRequest(request);
},
};
部署效果
图片格式转换
通过在浏览器中访问边缘函数绑定的指定函数或配置的特定路由地址,如果指定函数或路由地址中图片存储路径为PATH1,可查看到图片格式变化。
图片等比例缩放
通过在浏览器中访问边缘函数绑定的指定函数或配置的特定路由地址,如果指定函数或路由地址中图片存储路径为PATH2,查看到图片等比例缩放。
图片旋转
通过在浏览器中访问边缘函数绑定的指定函数或配置的特定路由地址,如果指定函数或路由地址中图片存储路径为PATH3,查看到图片旋转了180°。
该文章对您有帮助吗?