Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[新功能需求] 希望轮播图的图片判断方法isImage可以支持阿里云 OSS 服务及其他云服务生成的视频帧图片 URL 判断 #795

Open
TAYUN opened this issue Dec 20, 2024 · 0 comments
Labels
feature: need confirm 待确认的新特性

Comments

@TAYUN
Copy link

TAYUN commented Dec 20, 2024

这个功能解决了什么问题?

一些轮播图使用的图片可能是oss的视频截帧图片,无法通过isImage方法的判断,如果加上了type为image,那循环中的图片item又会变成对象,但是父组件预览图片的时候,需要特别的处理才能预览。

需求

希望改进图片 URL 判断逻辑,支持以下场景:

常规图片文件扩展名判断,例如 .jpeg, .png, .gif 等。
阿里云 OSS 服务生成的视频快照图片,带有 x-oss-process=video/snapshot 等参数的 URL。
其他云服务常见的图片处理参数,如:
腾讯云 COS 视频快照:?snapshot=t100&format=jpg。
七牛云图片处理参数:?imageMogr2/format/png。

当前的图片 URL 判断函数(如 isImageUrl)无法正确识别通过阿里云 OSS 服务或其他云存储服务生成的视频帧图片 URL。
https://oss-console-img-demo-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/video.mp4
使用fast模式截取视频7s处的内容,输出为JPG格式的图片,宽度为800,高度为600。
处理后的URL为:https://oss-console-img-demo-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/video.mp4?x-oss-process=video/snapshot,t_7000,f_jpg,w_800,h_600,m_fast

你期望的 API 是什么样子的?

/**

  • 检查提供的URL是否为图片URL,包括各种OSS服务的视频帧图或图片处理。
  • @param url 待检查的URL字符串。
  • @returns 返回一个布尔值,如果URL是图片格式,则为true;否则为false。
    */

export function isImage(url: string): boolean {
if (!url) return false;

// 匹配常规图片文件扩展名
const imageRegex = /.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)$/i;

// 通用OSS处理标识(适用于阿里云、腾讯云、七牛云等)
const ossImageProcess = /(x-oss-process|imageMogr2|imageView2|snapshot)=.*(image|snapshot|png|jpg)/i;

return imageRegex.test(url) || ossImageProcess.test(url);
}

期望结果

通过增强图片 URL 判断逻辑,能够正确识别阿里云 OSS、腾讯云 COS、七牛云等生成的特殊视频帧图片 URL,提升函数的适用性。

@TAYUN TAYUN added the feature: need confirm 待确认的新特性 label Dec 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature: need confirm 待确认的新特性
Projects
None yet
Development

No branches or pull requests

1 participant