访问的图片可以随意设置尺寸显示怎么实现?

看到B站的头像图片, 其中 "240w_240h", 可以随意设置宽和高访问,服务器会返回设置尺寸后的图片,请问大神们这种是如何实现的

阅读 1.9k
5 个回答

cdn 自带的裁图功能。

一般来说上传 oss 然后有 serverless 之类的服务直接按规则裁图。比如说用于列表封面的 100*100,用于专栏的 300*300,用于内容 cw750 规则

具体成本、收费标准都是不一样的。适用场景也不一样,因为截图生成也需要一定的时间。然后缓存命中率也需要考虑。

服务端接收对应的坐标和宽高参数,处理指定图片(裁剪、切割、旋转等)后返回就行

一般第三方的云存储服务都提供这种功能,比如阿里云、腾讯云,原理应该也不难,根据获取图片的的url里携带的参数,对图片进行裁剪压缩等操作。

如果你只是想要使用这个功能,那你可以用 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"));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题