开发者社区 > 视觉智能 > 图像搜索 > 正文

图搜搜索在国外机房上传图片到阿里云大概需要5,600ms的时间,从阿里云下载下来有需要大概100多m

图搜我们在国外机房上传图片到阿里云大概需要5,600ms的时间,从阿里云下载下来有需要大概100多ms。可不可以我们在上传图片和搜索的时候,都使用当地的OSS服务,如果这种方式 需要在其他系统中获取属性怎么附加到 oss

展开
收起
爱回答的三好学生 2023-06-25 12:59:31 106 0
7 条回答
写回答
取消 提交回答
  • 可以使用阿里云的OSS(Object Storage Service)服务来存储和管理图片,以提高上传和下载的速度。如果你希望在上传图片的同时获取图片属性,并将这些属性与图片一起保存到OSS中,可以采取以下步骤:

    1. 在上传图片时,先将图片上传到当地的OSS服务。你可以使用OSS的SDK或者API将图片上传到OSS存储桶中。

    2. 在上传图片的同时,获取图片的属性信息。你可以使用图像处理服务(如阿里云的图像搜索、图像识别等)对上传的图片进行处理,从中提取需要的属性信息。也可以使用自定义的方式获取图片属性,例如通过API调用第三方图像处理服务,或者使用本地的图像处理算法进行分析。

    3. 将获取到的图片属性信息和图片一起保存到OSS中。你可以将图片属性和图片文件组合成一个对象,然后将该对象以某种格式(如JSON)序列化为字符串,并将其作为附加元数据(Metadata)添加到上传的图片文件中。在使用OSS上传文件时,可以通过设置 x-oss-meta-* 的自定义头部信息将附加元数据传递给OSS服务。

    以下是一个示例代码片段,展示了如何使用阿里云Java SDK上传图片并附加属性:

    import com.aliyun.oss.OSS;
    import com.aliyun.oss.OSSClientBuilder;
    import com.aliyun.oss.model.ObjectMetadata;
    import java.io.File;
    
    public class ImageUploader {
        public static void main(String[] args) {
            // 配置OSS连接参数
            String endpoint = "your_endpoint";
            String accessKeyId = "your_access_key_id";
            String accessKeySecret = "your_access_key_secret";
            String bucketName = "your_bucket_name";
            
            // 创建OSS客户端
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            
            // 上传图片文件
            File imageFile = new File("path_to_image");
            String objectName = "object_name.jpg";
            ObjectMetadata metadata = new ObjectMetadata();
            
            // 添加自定义属性信息
            metadata.addUserMetadata("property1", "value1");
            metadata.addUserMetadata("property2", "value2");
            
            // 执行上传操作
            ossClient.putObject(bucketName, objectName, imageFile, metadata);
            
            // 关闭OSS客户端
            ossClient.shutdown();
        }
    }
    

    在上述示例代码中,你需要填写相应的配置参数(如 endpointaccessKeyIdaccessKeySecretbucketNameimageFile)以及自定义的属性信息。然后,通过调用 metadata.addUserMetadata 方法来添加自定义的属性信息。

    当你下载图片时,可以通过OSS的SDK或API获取附加的属性信息,并在其他系统中使用。

    2023-06-27 11:13:42
    赞同 展开评论 打赏
    1. 在当地机房中安装OSS SDK,例如SDK for PHP。
    2. 使用当地机房中的OSS SDK上传图片到OSS。
    3. 在当地机房中运行搜索程序,使用OSS SDK获取OSS中的图片,并进行搜索。
    4. 如果需要将其他系统中的属性附加到OSS中的图片,可以使用OSS的元数据(Metadata)功能。元数据是附加在对象上的键值对,可以用于存储对象的属性、标签等信息。您可以在上传图片到OSS时,将其他系统中的属性作为元数据附加到OSS中的图片对象中。
    2023-06-26 09:36:40
    赞同 展开评论 打赏
  • 月移花影,暗香浮动

    可以使用阿里云 OSS 服务作为上传图片和搜索的存储服务,并且可以将属性信息以对象的形式与上传的图片文件关联起来。可以通过 OSS 提供的元数据功能来实现。

    具体步骤如下:

    1. 在上传图片时,可以在请求头中设置元数据。

    如下代码是使用 Python SDK 上传文件时,设置元数据的示例代码:

    from oss2.headers import OSS_OBJECT_TAGGING
    
    # 设置元数据
    metadata = {'key1': 'value1', 'key2': 'value2'}
    headers = {OSS_OBJECT_TAGGING: base64.b64encode(json.dumps(metadata).encode('utf-8'))}
    
    # 上传文件
    bucket.put_object_from_file('<object name>', '<local file path>', headers=headers)
    

    上述代码中,首先通过 metadata 变量设置了文件的元数据,然后将元数据编码为 base64 后放入请求头中,最后调用 bucket.put_object_from_file 方法上传文件。

    1. 在对上传的文件进行搜索时,可以通过查询文件的元数据来筛选文件。

    如下代码是使用 Python SDK 查询文件的元数据时,筛选文件的示例代码:

    from oss2 import ObjectTagging
    
    # 查询文件元数据
    object_info = bucket.head_object('<object name>')
    if object_info.status == 200:
    # 解析元数据
    headers = object_info.headers
    if OSS_OBJECT_TAGGING in headers:
    metadata = json.loads(base64.b64decode(headers[OSS_OBJECT_TAGGING]).decode('utf-8'))
    
    # 筛选文件
    if metadata.get('key1') == 'value1':
    print('<object name> matched')
    

    上述代码中,首先通过 bucket.head_object 方法查询指定文件的元数据,然后解析元数据,筛选出 key1 属性值等于 value1 的文件进行操作。

    2023-06-25 17:44:18
    赞同 展开评论 打赏
  • 根据您提供的信息,上传图片到阿里云大概需要 5-600ms 的时间,而下载 100MB 的数据可能需要更长的时间。这可能会受到多种因素的影响,例如您的网络连接速度、阿里云服务的带宽和延迟、服务器负载等。

    以下是一些可能有助于优化网络性能和减少数据传输时间的建议:

    1. 使用适当的网络连接

    如果您的网络连接速度较慢,则可能会导致数据传输速度变慢。建议您使用高速稳定的网络连接,例如有线网络或 Wi-Fi 环境中的 5GHz 频段连接,以尽可能地提高数据传输速度。

    1. 将数据存储在距离您最近的地理位置的服务器上

    如果您将数据存储在距离您最近的地理位置的服务器上,则可能会降低数据传输延迟和损失,从而加快数据传输速度。例如,如果您的用户主要位于中国,请选择位于中国大陆区域内的阿里云服务器。

    1. 使用 HTTPS 协议进行数据传输

    HTTPS 加密协议可以确保数据在传输过程中得到安全保护,并且通过 HTTP/2 和其他协议优化技术可以提高数据传输效率。所以,在传输重要数据时,建议您使用 HTTPS 协议进行数据传输。

    1. 压缩数据以减少传输时间

    如果您的数据是文本、图像、视频或其他可压缩格式的数据,则可以使用压缩算法(例如 GZIP 或 Brotli)对其进行压缩。这可以减少数据传输时间和带宽使用量,并且不会对数据质量造成太大的影响。

    1. 使用 CDN 加速数据传输

    CDN 是一种分布式网络,可以将数据缓存到位于全球各地的服务器上,从而加速数据传输速度。如果您需要在全球范围内提供快速的图像搜索服务,则可以考虑使用阿里云 CDN 服务来加速数据传输。

    总之,优化数据传输性能需要综合考虑多个因素,并选择适当的技术和策略来提高传输速度和质量。建议您根据实际情况采取措施,并结合监测和性能测试工具来评估和优化网络性能。

    2023-06-25 17:08:22
    赞同 展开评论 打赏
  • 如果你希望在上传图片和搜索时使用当地的OSS服务,并获取其他系统中的属性并附加到OSS上,可以按照以下步骤进行:

    安装并配置OSS客户端:首先,你需要在你的系统中安装并配置OSS客户端。阿里云提供了多种编程语言的OSS SDK,你可以根据你的需求选择适合的SDK,并按照官方文档进行安装和配置。 上传图片到当地的OSS服务:在你的系统中,使用OSS客户端将图片上传到当地的OSS服务上。这可以通过OSS SDK提供的相应方法来实现。确保你使用的OSS SDK配置正确,用于连接到当地的OSS服务。 获取其他系统中的属性:从其他系统中获取你所需的属性。这可能涉及到与其他系统的交互,例如通过API调用或数据库查询来获取属性信息。 将属性附加到上传的图片:一旦你获取到了属性信息,你可以通过OSS客户端提供的对象元数据(Object Metadata)功能,将属性附加到上传的图片上。对象元数据允许你添加自定义的键值对,用于描述图片的属性。你可以为每个上传的图片设置相应的属性值。

    通过这种方式,你可以利用当地的OSS服务上传图片,并附加属性信息到图片上。当你需要搜索图片时,你可以根据已上传的图片属性进行搜索。请注意,在搜索阶段,你需要使用相应的OSS SDK方法来实现搜索功能。 需要注意的是,对于OSS对象的元数据,你需要事先定义好属性的命名规则和取值范围,以便在上传时方便管理和搜索。同样,在搜索时,你需要编写相应的逻辑来解析属性并进行搜索匹配。 希望这能帮助你在使用当地的OSS服务时获取其他系统中的属性并附加到OSS上。如果需要更详细的指导,建议参考阿里云官方文档或者咨询阿里云的技术支持团队。

    2023-06-25 14:20:53
    赞同 展开评论 打赏
  • 发表文章、提出问题、分享经验、结交志同道合的朋友

    同学你好,建议在上传图片和搜索时使用当地的OSS服务,可以提高系统性能,并减少不必要的网络传输。

    2023-06-25 13:42:17
    赞同 展开评论 打赏
  • 可以的,支持这种方式,此回答整理自钉群“【阿里云】图像搜索 - 用户交流群(答疑查看群公告底部指引)(答疑@机器人)”

    2023-06-25 13:30:36
    赞同 展开评论 打赏
滑动查看更多

基于阿里云深度学习技术,进行视觉内容搜索,在指定图像库中搜索出相同或相似的视觉信息,适用于内容比对、内容精确查找、相似素材搜索等场景。

相关电子书

更多
阿里云云原生 Serverless 技术实践营 PPT 演讲 立即下载
阿里云产品十月刊 立即下载
基于阿里云构建博学谷平台实时湖仓 立即下载