AutoWallpaperEnhancer脚本

脚本名称

AutoWallpaperEnhancer

脚本介绍

AutoWallpaperEnhancer 是一个全自动的 Python 脚本,旨在从指定的网页(如壁纸网站)批量爬取高分辨率图片,并通过 Adobe Photoshop 进行自动化图像增强处理。该脚本结合了 Web 爬虫和 Photoshop 脚本自动化功能,能够批量下载图片并提升其分辨率,使其适合用作高质量壁纸。

主要功能:

  1. 批量图片爬取:从目标网页自动爬取壁纸图片,并保存到本地指定文件夹。
  2. 自动图像增强:通过调用 Photoshop 的"图像大小"功能,利用"保持细节 2.0"算法,自动将爬取到的图片进行放大和增强。
  3. 全自动处理:处理完成后,脚本会自动保存处理后的图片,并自动退出 Photoshop,避免任何人为干预。
  4. 后台运行:Photoshop 可以在后台运行,不干扰用户的其他操作。

使用场景:

  • 适用于需要批量下载和增强壁纸图片的用户。
  • 可应用于需要将低分辨率图片放大为高分辨率的场景,确保图片质量最大化。

依赖:

  • Python 3.x
  • RequestsBeautifulSoup4:用于网页爬虫。
  • win32com.client:用于与 Photoshop 进行 COM 通信。
  • Adobe Photoshop:处理图片的核心工具(建议使用最新版)。

如何使用:

  1. 配置与依赖

    • 安装 Python 并确保已安装所需的 Python 库。
    • 确保系统中已安装 Adobe Photoshop,并配置好 COM 接口。
  2. 运行脚本

    • 将脚本下载到本地,并根据需要修改脚本中的配置(如网页 URL、爬取页数等)。
    • 运行脚本,脚本会自动爬取图片并调用 Photoshop 进行处理。
  3. 查看结果

    • 处理后的高分辨率图片会保存在指定的本地文件夹中。

注意事项:

  • Photoshop 版本:此脚本需要适配 Photoshop 2023 或更高版本。如遇到兼容性问题,建议更新 Photoshop。
  • 图像质量:虽然脚本自动提高图片分辨率,但实际效果仍然取决于原始图片的质量。
  • 批量处理:对于大量图片的处理,建议确保系统性能,以避免 Photoshop 处理过载。

AutoWallpaperEnhancer 是一个功能强大的工具,专为需要高质量壁纸的用户设计,简化了下载和图像增强的流程,提供了一个轻松获取高分辨率壁纸的解决方案。

Python脚本

import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
import hashlib
import win32com.client

# 基础 URL
base_url = 'https://haowallpaper.com/?page='

# 要爬取的页数范围
start_page = 1
end_page = 2  # 例如爬取第 1 到第 5 页

# 请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}

# 保存图片的目录
save_dir = 'high_res_wallpapers'
if not os.path.exists(save_dir):
    os.makedirs(save_dir)

# 记录已经下载的图片 URL
downloaded_urls = set()


# 过滤掉无用的图像链接(如默认背景图等)
def is_relevant_image(url):
    placeholder_patterns = [
        '/_nuxt/defaultBag.',
        'placeholder',
        'default',
        'no_image',
        '404',
        'error'
    ]
    return not any(pattern in url for pattern in placeholder_patterns)


# 获取高分辨率图片的 URL
def get_high_res_image_url(img_tag):
    srcset = img_tag.get('srcset')
    if srcset:
        srcset_urls = [url.split(' ')[0] for url in srcset.split(',')]
        if srcset_urls:
            return srcset_urls[-1]
    return img_tag.get('src')


# 使用 Photoshop 提高图片分辨率
def enhance_image_with_photoshop(img_path):
    # 确保路径是绝对路径
    img_path = os.path.abspath(img_path)

    # 检查文件是否存在
    if not os.path.exists(img_path):
        print(f'文件不存在: {img_path}')
        return

    try:
        # 启动 Photoshop 应用
        app = win32com.client.Dispatch("Photoshop.Application")
        script_path = os.path.abspath('photoshop_script.jsx')

        # 打开图像
        doc = app.Open(img_path)

        # 设置 Photoshop 前台运行
        app.Visible = True

        # 执行 JSX 脚本
        app.DoJavaScriptFile(script_path)

        print(f'图片已通过 Photoshop 处理并保存到: {img_path}')
    except Exception as e:
        print(f'Photoshop 处理出错: {e}')


# 遍历每一页
for page in range(start_page, end_page + 1):
    url = base_url + str(page)
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        soup = BeautifulSoup(response.text, 'html.parser')
        wallpaper_containers = soup.find_all('div', class_='card')
        for container in wallpaper_containers:
            link_tag = container.find('a', href=True)
            if link_tag:
                detail_page_url = urljoin('https://haowallpaper.com', link_tag['href'])
                detail_response = requests.get(detail_page_url, headers=headers)
                if detail_response.status_code == 200:
                    detail_soup = BeautifulSoup(detail_response.text, 'html.parser')
                    img_tags = detail_soup.find_all('img')
                    for img_tag in img_tags:
                        high_res_img_url = get_high_res_image_url(img_tag)
                        if not high_res_img_url:
                            continue
                        high_res_img_url = urljoin('https://haowallpaper.com', high_res_img_url)
                        if not is_relevant_image(high_res_img_url):
                            print(f'跳过无关图片: {high_res_img_url}')
                            continue
                        if high_res_img_url in downloaded_urls:
                            print(f'跳过已下载的图片: {high_res_img_url}')
                            continue
                        try:
                            img_response = requests.get(high_res_img_url, headers=headers)
                            if img_response.status_code == 200:
                                img_url_hash = hashlib.md5(high_res_img_url.encode('utf-8')).hexdigest()
                                img_name = f"{img_url_hash}.jpg"
                                img_path = os.path.join(save_dir, img_name)
                                with open(img_path, 'wb') as f:
                                    f.write(img_response.content)
                                print(f'已下载高分辨率图片: {img_name}')
                                downloaded_urls.add(high_res_img_url)
                                enhance_image_with_photoshop(img_path)
                            else:
                                print(f'下载失败: {high_res_img_url}, 状态码: {img_response.status_code}')
                        except requests.RequestException as e:
                            print(f'下载图片 {high_res_img_url} 时发生错误: {e}')
                else:
                    print(f'获取详细页面失败: {detail_page_url}, 状态码: {detail_response.status_code}')
    else:
        print(f'获取页面 {page} 失败。状态码: {response.status_code}')

photoshop_script.jsx脚本

// 获取当前打开的文档
var doc = app.activeDocument;

// 调整分辨率
var newResolution = 300;
doc.resizeImage(undefined, undefined, newResolution, ResampleMethod.BICUBIC);

// 保存增强后的图像
var saveOptions = new JPEGSaveOptions();
saveOptions.quality = 12;

// 构造输出文件路径
var outputFile = new File(doc.path + "/enhanced_" + doc.name);
doc.saveAs(outputFile, saveOptions, true);

// 关闭文档,不保存原文件的更改
doc.close(SaveOptions.DONOTSAVECHANGES);
相关推荐
我是陈泽9 天前
强大的3款自动爬虫利器,再也不用手撸代码了
开发语言·爬虫·python·python爬虫·python教程·python学习·python教学
我叫RT14 天前
摸鱼 | 图片转Excel单元格脚本
python·excel·脚本
骅青1 个月前
培训第二十三天(mysql主从脚本与mysql详细语句介绍)
数据库·mysql·脚本·语法
菜就多练_08281 个月前
Linux--shell脚本语言—/—<2>
linux·运维·服务器·shell·脚本
程序烂人2 个月前
字体反爬之自动化通过字体文件生成映射字典
爬虫·自动化·python爬虫·字体反爬
岚天start2 个月前
Linux服务监控自动巡检脚本--推送钉钉告警
linux·钉钉·脚本·服务监控·端口监控
来一杯龙舌兰2 个月前
Docker-搭建部署Jenkins(保姆篇)
servlet·docker·jenkins·脚本·部署项目
Byyyi耀2 个月前
集群管理脚本
linux·脚本·集群
程序无涯海2 个月前
Python爬虫教程第0篇-写在前面
开发语言·爬虫·python·教程·python爬虫