Python(一)截图上传OSS并返回图片地址

截图上传OSS并返回图片地址

一、代码实现

# !/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import time
import oss2
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from pydantic import BaseModel
from fastapi import FastAPI

app = FastAPI()


class Item(BaseModel):
    url = 'default'
    pic_name = 'default_url'

def get_image(url, pic_name):
    print("python版本号:"+sys.version)
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    #添加沙盒模式
    chrome_options.add_argument("--no-sandbox")

    # 创建浏览器对象
    # windows
    driver = webdriver.Chrome(executable_path = 'E:/projects/onegolf/onegolf-parent/onegolf-server/onegolf-api/onegolf-python/windows/chromedriver', options=chrome_options)
    # linux
    # driver = webdriver.Chrome('./chromedriver', options=chrome_options)

    # 打开网页
    driver.get(url)
    # driver.maximize_window()
    # 加延时 防止未加载完就截图
    time.sleep(1)

    # 用js获取页面的宽高,如果有其他需要用js的部分也可以用这个方法
    width = driver.execute_script("return document.documentElement.scrollWidth")
    height = driver.execute_script("return document.documentElement.scrollHeight")

    # 将浏览器的宽高设置成刚刚获取的宽高
    driver.set_window_size(width, height)
    time.sleep(1)

    # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
    auth = oss2.Auth('ossAccessKeyId', 'ossAccessKeySecret')
    # Endpoint以北京为例,其它Region请按实际情况填写。
    bucket = oss2.Bucket(auth, 'http://oss-cn-beijing.aliyuncs.com', 'ossBucketName')

    bucket.put_object('oss/image/match/'+pic_name, driver.get_screenshot_as_png())
    driver.quit()

    return_url = 'https://ip/oss/image/match/'+pic_name
    print("图片地址:" + return_url)
    return return_url


@app.post('/poster')
def calculate(request_data: Item):
    print("请求地址:"+request_data.url)

    return get_image(request_data.url, request_data.pic_name)


if __name__ == '__main__':
    import uvicorn
    uvicorn.run(app=app,
                host="0.0.0.0",
                port=29997,
                workers=1)

二、代码讲解

i:__main__方法使用了uvicorn,指定web应用ip和端口。

ii:calculate方法使用fastapi提供了请求路径,在这个接口中接收了两个参数,网页地址(需要截图的网页地址),图片名称(给图片命名),最后直接传递给核心实现方法get_image()方法。

iii:在get_image()一共做了4件事,①驱动谷歌浏览器,②访问网页并截图,③将截图上传至OSS,④组装图片完整路径并返回给调用者

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
腾讯云提供了一个用于上传图片Python工具。你可以使用该工具来上传图片到腾讯云的对象存储服务(OSS)。 使用腾讯云OSSPython SDK,你可以通过以下步骤来上传图片: 1. 首先,确保你已经安装了腾讯云Python SDK。你可以使用pip进行安装,命令如下: ``` pip install cos-python-sdk-v5 ``` 2. 导入必要的模块和配置腾讯云的认证信息。示例代码如下: ```python import os from qcloud_cos import CosConfig from qcloud_cos import CosS3Client # 配置腾讯云的认证信息 secret_id = 'your_secret_id' secret_key = 'your_secret_key' region = 'your_region' bucket = 'your_bucket' # 配置CosConfig对象 config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key) # 创建CosS3Client对象 cos_client = CosS3Client(config) ``` 3. 使用`put_object`方法来上传图片。示例代码如下: ```python # 指定要上传的本地图片路径和目标图片路径 local_image_path = 'path_to_local_image.jpg' target_image_path = 'path_to_target_image.jpg' # 调用put_object方法上传图片 response = cos_client.put_object( Bucket=bucket, Body=open(local_image_path, 'rb'), Key=target_image_path, StorageClass='STANDARD', ContentType='image/jpeg' ) # 获取图片OSS上的URL image_url = response['Location'] ``` 通过以上步骤,你可以使用腾讯云OSSPython工具来上传图片。记得替换代码中的认证信息、区域、存储桶名称和本地图片路径、目标图片路径等参数。 希望这个回答对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ALOSSTC:基于阿里云OSS对象存储的智能图床编写](https://download.csdn.net/download/weixin_42151599/18691476)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [laravel 6.18框架上传文件到阿里云OSS腾讯云COS](https://blog.csdn.net/php_xml/article/details/107838908)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [腾讯云OSS使用指南](https://blog.csdn.net/hy6533/article/details/117155258)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值