看到B站的头像图片, 其中 "240w_240h", 可以随意设置宽和高访问,服务器会返回设置尺寸后的图片,请问大神们这种是如何实现的
如果你只是想要使用这个功能,那你可以用 CDN 或者 OSS 提供的图片裁剪参数,这些主流的服务商都用提供,看文档即可,但是要注意的是,对于部分服务商,这是一项收费服务(一般是按量/按次)
如果你想自己实现一个,那其实你可以把它理解成,在有相关参数后,网关(Nginx)会把请求转发给后端进行处理,后端对图片进行裁剪,然后再返回;如果没有参数就直接返回文件。
按照给定的宽度和高度将图片转换为指定尺寸的图片。这种实现方式可能是利用了某种图片处理软件或库,来对图片进行转换。例如,在 Java 中可以使用 java.awt.Image 类的 getScaledInstance() 方法来实现图片的缩放。
以下是一个简单的示例:
// 创建图片处理器
Image image = ImageIO.read(new File("old.jpg"));
// 设置缩放比例
int width = 240;
int height = 240;
// 缩放图片
Image scaledImage = image.getScaledInstance(width, height, Image.SCALE_DEFAULT);
// 保存缩放后的图片
ImageIO.write(scaledImage, "jpg", new File("new.jpg"));
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
4 回答4.5k 阅读✓ 已解决
1 回答3.3k 阅读✓ 已解决
cdn 自带的裁图功能。
一般来说上传 oss 然后有 serverless 之类的服务直接按规则裁图。比如说用于列表封面的
100*100
,用于专栏的300*300
,用于内容cw750
规则具体成本、收费标准都是不一样的。适用场景也不一样,因为截图生成也需要一定的时间。然后缓存命中率也需要考虑。