Skip to content

Latest commit

 

History

History
176 lines (130 loc) · 3.96 KB

File metadata and controls

176 lines (130 loc) · 3.96 KB

图片URL获取和使用指南

1. URL获取方式

自动获取

每次拍照上传成功后,应用会自动:

  • 在日志中输出图片URL
  • 将URL复制到剪贴板
  • 保存URL到本地存储
  • 在Toast消息中显示URL

手动获取

你可以通过以下方式获取图片URL:

// 获取最新的图片URL
val latestUrl = imageUrlManager.getLatestImageUrl()

// 获取所有图片URL
val allUrls = imageUrlManager.getAllImageUrls()

// 获取URL总数
val count = imageUrlManager.getUrlCount()

2. URL格式

生成的图片URL格式如下:

https://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/camera-photos/photo_20240101_120000_123.jpg

组成部分:

  • your-bucket-name: 你的OSS存储桶名称
  • oss-cn-hangzhou.aliyuncs.com: OSS访问域名
  • camera-photos/: 配置的上传文件夹
  • photo_20240101_120000_123.jpg: 自动生成的文件名

3. URL使用示例

在网页中显示图片

<img src="https://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/camera-photos/photo_20240101_120000_123.jpg" alt="拍摄的照片">

在Android中加载图片

// 使用Glide加载图片
Glide.with(context)
    .load(imageUrl)
    .into(imageView)

// 使用Picasso加载图片
Picasso.get()
    .load(imageUrl)
    .into(imageView)

获取缩略图

// 生成200x200的缩略图URL
val thumbnailUrl = imageUrlManager.getThumbnailUrl(originalUrl, 200, 200)

4. URL管理功能

保存和获取

// 保存URL
imageUrlManager.saveImageUrl(url)

// 获取最新URL
val latestUrl = imageUrlManager.getLatestImageUrl()

// 获取所有URL(包含时间信息)
val allUrls = imageUrlManager.getAllImageUrls()

分享和复制

// 复制到剪贴板
imageUrlManager.copyUrlToClipboard(url)

// 分享URL
imageUrlManager.shareImageUrl(url)

工具方法

// 验证URL有效性
val isValid = imageUrlManager.isUrlValid(url)

// 从URL提取文件名
val fileName = imageUrlManager.getFileNameFromUrl(url)

// 清除所有保存的URL
imageUrlManager.clearAllUrls()

5. 日志查看

查看图片URL相关日志:

# 查看上传成功的URL
adb logcat | grep "图片上传OSS成功"

# 查看URL管理相关日志
adb logcat | grep "ImageUrlManager"

# 查看所有相关日志
adb logcat | grep -E "(图片URL|ImageUrlManager|OSSUploadService)"

6. 自定义URL处理

你可以在 CameraFragment.onImageUploadSuccess() 方法中添加自定义逻辑:

private fun onImageUploadSuccess(imageUrl: String) {
    // 保存到本地
    imageUrlManager.saveImageUrl(imageUrl)
    
    // 发送到你的服务器
    sendUrlToServer(imageUrl)
    
    // 保存到数据库
    saveUrlToDatabase(imageUrl)
    
    // 发送通知
    sendNotification("图片上传成功", imageUrl)
    
    // 更新UI
    updateUI(imageUrl)
}

7. 常见问题

Q: URL无法访问?

A: 检查OSS bucket的访问权限设置,确保允许公共读取。

Q: 如何自定义文件名?

A: 修改 OSSUploadService.kt 中的文件名生成逻辑。

Q: 如何批量获取URL?

A: 使用 imageUrlManager.getAllImageUrls() 获取所有保存的URL。

Q: 如何清除历史URL?

A: 使用 imageUrlManager.clearAllUrls() 清除所有保存的URL。

8. 高级功能

图片处理

阿里云OSS支持实时图片处理,你可以在URL后添加参数:

// 调整大小
val resizedUrl = "$originalUrl?x-oss-process=image/resize,w_300,h_300"

// 添加水印
val watermarkUrl = "$originalUrl?x-oss-process=image/watermark,text_Hello"

// 格式转换
val webpUrl = "$originalUrl?x-oss-process=image/format,webp"

安全访问

如果需要私有访问,可以生成带签名的URL:

// 在OSSUploadService中添加方法
fun generateSignedUrl(objectKey: String, expiration: Long): String {
    // 使用OSS SDK生成带签名的URL
    return ossClient.presignConstrainedObjectURL(bucketName, objectKey, expiration)
}