当前位置: 首页 > news >正文

【办公类-100-01】20250515手机导出教学照片,自动上传csdn+最大化、最小化Vs界面

背景说明:

每次把教学照片上传csdn,都需要打开相册,一张张截图,然后ctrl+V黏贴到CSDN内,我觉得太烦了。

改进思路:

是否可以先把所有照片都上传到csdn,然后再一张张的截图(去掉幼儿部分,打码等,放大学具部分)

以上传蝴蝶图为例

1.手机导出照片都放在00原图里

一张图5MB,直接上传csdn,太大了

需要把图片的高宽和图片大小(MB)都缩小。

2、缩小图片的高宽和大小

'''
相册导出幼儿照片需要上传csdn——缩小图片
deepseek,阿夏
20250515
'''from PIL import Image
import os# 输入和输出文件夹
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\20250508GIF测试'
input_folder = path+r"\00原图"  # 原图文件夹
output_folder = path+r"\01小图"  # 缩小后的图片保存文件夹# 如果输出文件夹不存在,则创建
os.makedirs(output_folder, exist_ok=True)# 遍历输入文件夹中的所有图片
for filename in os.listdir(input_folder):if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):input_path = os.path.join(input_folder, filename)output_path = os.path.join(output_folder, filename)try:# 打开图片with Image.open(input_path) as img:# 缩小尺寸到 50%new_width = int(img.width * 0.5)new_height = int(img.height * 0.5)resized_img = img.resize((new_width, new_height), Image.LANCZOS)# 保存图片,质量降低 50%(仅适用于 JPEG)if filename.lower().endswith(('.jpg', '.jpeg')):resized_img.save(output_path, quality=50, optimize=True)else:resized_img.save(output_path)print(f"已处理: {filename} → 新尺寸: {new_width}x{new_height}")except Exception as e:print(f"处理 {filename} 时出错: {e}")print("所有图片处理完成!")

高宽和大小都缩小一半

3、Python模拟鼠标自动上传。

全部批量复制上传图片会出现第一张到最后位置,或者系统检测一次性上传大量图片,会封号。

所以我采用一张张上传的方式(随机间隔秒数)

'''
相册导出幼儿照片需要上传-模拟上传csdn-随机停顿秒数(防止检测)
deepseek,阿夏
20250515
'''import os, time
import random  # 补充导入 random 模块
import pyautogui
import pyperclip
import re
import win32api
import win32con# 初始暂停(用于最小化Python窗口)
time.sleep(5)# 读取文件名称和路径
paths = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250508GIF测试'
path = paths + r"\01小图"  # 缩小后的图片保存文件夹
os.makedirs(path, exist_ok=True)# 读取图片路径列表
img_path = [os.path.join(path, img) for img in os.listdir(path) if img.endswith(".png")]
print(img_path)
print(len(img_path))# 随机秒数函数
def a():t = random.randint(1, 3)  # 生成 1~3 秒的随机数return t# 遍历所有图片并模拟上传
for i in range(len(img_path)):# 随机停顿(每次调用 a() 生成新的随机值)t = a()  # 保存返回值到变量 t# 点击图像按钮pyautogui.moveTo(1090, 183)pyautogui.click()time.sleep(t)  # 使用随机停顿# 点击选择图片按钮pyautogui.moveTo(1574, 524)pyautogui.click()time.sleep(t + 3)  # 基础随机秒数 + 额外固定秒数# 输入图片名称(从剪贴板粘贴)name = img_path[i]pyperclip.copy(name)pyautogui.hotkey('ctrl', 'v')time.sleep(t + 1)# 确认上传(两次回车,每次间隔随机)pyautogui.press('enter')time.sleep(t + 5)pyautogui.press('enter')time.sleep(t + 5)

用了随机间隔秒数,防止被检测出自动化风险

上传过程视频

20250515随机秒数自动上传CSDN照片

虽然时间很长,但是确保了能够不同间隔时长。

再处理真实照片时,我发现,虽然我把一些照片左转或右转了,但是缩小后,它还是原图没有旋转的样子

问了deepseek,

一、清除exif信息,缩小图片,手动旋转


'''
相册导出幼儿照片需要上传csdn——清除图片中的exif+缩小图片—+手动旋转照片
deepseek,阿夏
20250515
'''
import os
from PIL import Imagedef remove_exif_and_resize(input_folder, output_folder_exif, output_folder_resized):"""批量清除 EXIF 并缩小图片尺寸至 50%:param input_folder: 原始图片文件夹路径:param output_folder_exif: 清除 EXIF 后的图片保存路径:param output_folder_resized: 缩小后的图片保存路径"""# Step 1: 清除 EXIFif not os.path.exists(output_folder_exif):os.makedirs(output_folder_exif)print("=" * 50)print("🚀 开始清除 EXIF 数据...")print("=" * 50)for filename in os.listdir(input_folder):if filename.lower().endswith(('.jpg', '.jpeg', '.png', '.tiff', '.bmp', '.gif')):input_path = os.path.join(input_folder, filename)output_path_exif = os.path.join(output_folder_exif, filename)try:with Image.open(input_path) as img:img_copy = img.copy()img_copy.info = {}  # 清除 EXIFimg_copy.save(output_path_exif)print(f"✅ EXIF 已清除: {filename}")except Exception as e:print(f"❌ 处理 {filename} 时出错 (EXIF): {e}")# Step 2: 缩小图片尺寸至 50%if not os.path.exists(output_folder_resized):os.makedirs(output_folder_resized)print("\n" + "=" * 50)print("🖼️ 开始缩小图片尺寸...")print("=" * 50)for filename in os.listdir(output_folder_exif):if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):input_path = os.path.join(output_folder_exif, filename)output_path_resized = os.path.join(output_folder_resized, filename)try:with Image.open(input_path) as img:# 缩小至 50%new_width = int(img.width * 0.5)new_height = int(img.height * 0.5)resized_img = img.resize((new_width, new_height), Image.LANCZOS)# 如果是 JPEG,降低质量至 50%if filename.lower().endswith(('.jpg', '.jpeg')):resized_img.save(output_path_resized, quality=50, optimize=True)else:resized_img.save(output_path_resized)print(f"✅ 已缩小: {filename} → {new_width}x{new_height}")except Exception as e:print(f"❌ 处理 {filename} 时出错 (缩放): {e}")print("\n" + "=" * 50)print("🎉 所有图片处理完成!")print("=" * 50)if __name__ == "__main__":# 设置路径path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250515门牌号'input_folder = os.path.join(path, "00原图")          # 原始图片output_folder_exif = os.path.join(path, "01exif")    # 清除 EXIF 后的图片output_folder_resized = os.path.join(path, "02小图")  # 缩小后的图片# 执行处理remove_exif_and_resize(input_folder, output_folder_exif, output_folder_resized)

小图照片(需要左转)

手动全选,向左转

自动上传

'''
相册导出幼儿照片需要上传-模拟上传csdn-随机停顿秒数(防止检测)
deepseek,阿夏
20250515
'''import os, time
import random  # 补充导入 random 模块
import pyautogui
import pyperclip
import re
import win32api
import win32con# 初始暂停(用于最小化Python窗口)time.sleep(5)# 读取文件名称和路径
paths = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250515门牌号'
path = paths + r"\01小图"  # 缩小后的图片保存文件夹
os.makedirs(path, exist_ok=True)# 读取图片路径列表
img_path = [os.path.join(path, img) for img in os.listdir(path) if img.endswith(".jpg")]
print(img_path)
print(len(img_path))# 随机秒数函数
def a():t = random.randint(1, 3)  # 生成 1~3 秒的随机数return t# 遍历所有图片并模拟上传
for i in range(len(img_path)):# 随机停顿(每次调用 a() 生成新的随机值)t = a()  # 保存返回值到变量 t# 点击图像按钮pyautogui.moveTo(1090, 183)pyautogui.click()time.sleep(t)  # 使用随机停顿# 点击选择图片按钮pyautogui.moveTo(1574, 524)pyautogui.click()time.sleep(t + 3)  # 基础随机秒数 + 额外固定秒数# 输入图片名称(从剪贴板粘贴)name = img_path[i]pyperclip.copy(name)pyautogui.hotkey('ctrl', 'v')time.sleep(t + 1)# 确认上传(两次回车,每次间隔随机)pyautogui.press('enter')time.sleep(t + 5)pyautogui.press('enter')time.sleep(t + 5)

这下可以旋转图片后,上传后的图片也默认我需要的方向(拍的时候变成竖版的照片也变成横板进行显示),

我觉得代码可以再优化,现在CSDN界面一直开着,我也不知道VS程序是否结束。

所以最开始,最小化VS界面,生成到最后,最大化VS界面,这样就知道程序结束了,

​​​​'''
相册导出幼儿照片需要上传-模拟上传csdn-随机停顿秒数(防止检测),最大化、最小化界面
deepseek,阿夏
20250515
'''import os, time
import random  # 补充导入 random 模块
import pyautogui
import pyperclip
import re
import win32api
import win32con# 初始暂停(用于最小化Python窗口)import sys
import ctypesdef minimize_vscode():try:# Windows 系统if sys.platform == 'win32':hwnd = ctypes.windll.user32.GetForegroundWindow()ctypes.windll.user32.ShowWindow(hwnd, 6)  # SW_MINIMIZE = 6# 其他系统可能需要不同的方法except:pass  # 忽略错误# 你的主程序代码
print("程序运行中...")# 程序结束后最小化 VS Code
minimize_vscode()
# maximize_vscode()
# time.sleep(2)
time.sleep(5)# 读取文件名称和路径
paths = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250515门牌号'
path = paths + r"\02小图"  # 缩小后的图片保存文件夹
os.makedirs(path, exist_ok=True)# 读取图片路径列表
img_path = [os.path.join(path, img) for img in os.listdir(path) if img.endswith(".jpg")]
print(img_path)
print(len(img_path))# 随机秒数函数
def a():t = random.randint(1, 3)  # 生成 1~3 秒的随机数return t# 遍历所有图片并模拟上传
for i in range(64,len(img_path)):# 随机停顿(每次调用 a() 生成新的随机值)t = a()  # 保存返回值到变量 t# 点击图像按钮pyautogui.moveTo(1090, 183)pyautogui.click()time.sleep(t)  # 使用随机停顿# 点击选择图片按钮pyautogui.moveTo(1574, 524)pyautogui.click()time.sleep(t + 3)  # 基础随机秒数 + 额外固定秒数# 输入图片名称(从剪贴板粘贴)name = img_path[i]pyperclip.copy(name)pyautogui.hotkey('ctrl', 'v')time.sleep(t + 1)# 确认上传(两次回车,每次间隔随机)pyautogui.press('enter')time.sleep(t + 5)pyautogui.press('enter')time.sleep(t + 5)# 最大化界面
def maximize_vscode():try:# Windows 系统if sys.platform == 'win32':hwnd = ctypes.windll.user32.GetForegroundWindow()ctypes.windll.user32.ShowWindow(hwnd, 6)  # SW_MINIMIZE = 6# 其他系统可能需要不同的方法except:pass  # 忽略错误# 你的主程序代码
print("程序运行中...")# 程序结束后最小化 VS Code
# minimize_vscode()
maximize_vscode()
# time.sleep(2)
time.sleep(5)

相关文章:

  • 2025长三角杯数学建模A题:智能手机产品设计优化与定价问题,赛题发布与思路分析
  • 搭建Centos环境安装禅道
  • 深度解析 Meta 开源 MR 项目《North Star》:从交互到渲染的沉浸式体验设计
  • Python 类变量与实例变量完全指南:区别、使用场景及常见陷阱
  • 兰亭妙微B端UI设计:融合多元风格,点亮品牌魅力
  • 什么是接口文档,如何使用,注意事项有哪些
  • 51c~C语言~合集5
  • SQL:MySQL函数:空值处理函数(NULL Handling Functions)
  • Uniapp中小程序调用腾讯地图(获取定位地址)
  • 【向量维度如何选择?】
  • Midjourney 最佳创作思路与实战技巧深度解析【附提示词与学习资料包下载】
  • Ubuntu 20.04 LTS 中部署 网页 + Node.js 应用 + Nginx 跨域配置 的详细步骤
  • C# 活动窗体截图:基于 Win32 API 的实现
  • Rust 学习笔记:关于 Vector 的练习题
  • 视频质量分析时,遇到不同分辨率的对照视频和源视频,分辨率对齐的正确顺序。
  • Docker容器镜像与容器常用操作指南
  • LBM:潜在桥接匹配用于图像重照明
  • Flink 1.13.2 日志配置优化:保留最近 7 天日志文件
  • ControlNet可控生成从理论到实践——保姆级教程
  • 【学习心得】WSL2安装Ubuntu22.04
  • 郑钦文憾负高芙,止步WTA1000罗马站四强
  • “AD365特应性皮炎疾病教育项目”启动,助力提升认知与规范诊疗
  • 远洋集团:今年前4个月销售80.9亿元,同比增加13.62%
  • 刘晓庆被实名举报涉嫌偷税漏税,税务部门启动调查
  • 今年有望投产里程已近3000公里,高铁冲刺谁在“狂飙”?
  • 互降关税后,从中国至美国的集装箱运输预订量飙升近300%