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

【工具】解析URL获取实际图片地址下载原始FFHQ图像

问题简述

最近的项目需要用到FFHQ的原始图像,但是官网上的70k张图像是已经对齐过的,想下载原始高清图像,怎么搞?

前置条件

官方地址https://github.com/NVlabs/ffhq-dataset下载json (ffhq-dataset-v2.json)文件,里面包含所有图像的原始地址。
示例如下
在这里插入图片描述
"photo_url"代表着原始图像的地址,可以进去下载,首先需要把flickr上的70k个人脸图像剥离开来,方便下载

步骤1 剥离地址,方便下载

import json
import os
def process_json(json_data, output_dir):# os.makedirs(output_dir, exist_ok=True)with open(output_dir, 'w') as f:for key, value in json_data.items():metadata = value.get("metadata", {})photo_url = metadata.get("photo_url")if photo_url:# 使用键作为文件名f.write(photo_url + '\n')# save_path = os.path.join(output_dir, f"{key}.jpg")# download_image(photo_url, save_path)
def main():json_file = r"F:\ffhq-dataset-v2.json"  # 替换为你的 JSON 文件路径output_dir = r"downloaded_images\ffhq_down_url.txt"with open(json_file, 'r') as file:json_data = json.load(file)process_json(json_data, output_dir)if __name__ == "__main__":main()

运行代码后得到干净的txt下载地址,如下示例所示
在这里插入图片描述

步骤2 解析URL获取实际图片地址下载图像

这里采用BeautifulSoup解释,通过地址加后缀的方式可以选择想要的图像尺寸,例如"/sizes/k"代表2048尺寸,/sizes/o 代表原始尺寸。如果修改,后面的_k.jpg也需要跟着修改。

import requests
import os
from bs4 import BeautifulSoup
from tqdm import tqdm
# 解析URL获取实际图片地址
def get_actual_image_url(preview_url):new_preview_url = preview_url.rstrip('/') + '/sizes/k'try:response = requests.get(new_preview_url)response.raise_for_status()soup = BeautifulSoup(response.text, 'html.parser')img_tag = soup.find('img', {'src': lambda x: x and x.endswith('_k.jpg')})if img_tag:actual_url = img_tag['src']return actual_urlexcept requests.exceptions.RequestException as e:print(f'解析失败 {new_preview_url}: {e}')# parts = preview_url.strip('/').split('/')# photo_id = parts[-1]# return f'https://live.staticflickr.com/unknown_domain/{photo_id}_k.jpg'# 下载图片
def download_image(preview_url, save_dir):actual_url = get_actual_image_url(preview_url)if actual_url and actual_url.startswith('//'):actual_url = 'https:' + actual_urlif not os.path.exists(save_dir):os.makedirs(save_dir)if actual_url:file_name = os.path.join(save_dir, os.path.basename(actual_url))else:print(f'未获取到有效图片链接,跳过 {preview_url}')returntry:import requestsresponse = requests.get(actual_url)response.raise_for_status()with open(file_name, 'wb') as file:file.write(response.content)print(f'成功下载: {file_name}')except requests.exceptions.RequestException as e:print(f'下载失败 {actual_url}: {e}')# 主函数
def main():url_file = 'e:\\Research\\Tools\\downloaded_images\\ffhq_down_url.txt'save_dir = r'F:\Data\20250430FFHQ_ori'with open(url_file, 'r') as file:urls = file.readlines()for url in tqdm(urls):download_image(url.strip(), save_dir)if __name__ == '__main__':main()

如果只需要示例图,相关代码可以修改为:

def get_actual_image_url(preview_url):try:response = requests.get(preview_url)response.raise_for_status()soup = BeautifulSoup(response.text, 'html.parser')img_tag = soup.find('img', {'class': 'main-photo'})  # 根据实际情况调整classif img_tag:actual_url = img_tag['src']return actual_urlexcept requests.exceptions.RequestException as e:print(f'解析失败 {preview_url}: {e}')

即只需要获取'class': 'main-photo' 就行。

多说一句

为什么不使用flickr的api https://www.flickr.com/services/api/,安装相应的包使用https://stuvel.eu/software/flickrapi/

因为现在要钱了,用不了
在这里插入图片描述

http://www.xdnf.cn/news/301285.html

相关文章:

  • 如何将本地 Jar 包安装到 Maven 仓库(以 Aspose 为例)
  • 小芯片大战略:Chiplet技术如何重构全球半导体竞争格局?
  • aws平台windows虚拟机扩容
  • Eigen矩阵的平移,旋转,缩放
  • 制造企业PLM系统成本基准:2025年预算分配与资源成本率的5种优化模型
  • AI智能体|扣子(Coze)实战【天气查询插件开发教程】
  • IAA-Net:一种实孔径扫描雷达迭代自适应角超分辨成像方法——论文阅读
  • centos的根目录占了大量空间怎么办
  • nut-list和nut-swipe搭配:nut-cell侧滑定义无法冒泡打开及bug(含代码、案例、截图)
  • 高并发PHP部署演进:从虚拟机到K8S的DevOps实践优化
  • 1. 视频基础知识
  • Java高频面试之并发编程-12
  • 详细教程:如何在vs code里面给普通的HTML搭建局域网服务器给其他设备访问
  • react-14defaultValue(仅在首次渲染时生效)和value(受 React 状态控制)
  • vue项目中渲染markdown并处理报错
  • Electrolink信息泄露(CVE-2025-28228)
  • 图像处理软件imgPro—调参救星!
  • RabbitMq(尚硅谷)
  • 常识补充(NVIDIA NVLink技术:打破GPU通信瓶颈的革命性互联技术)
  • 【quantity】1 SI Prefixes 实现解析(prefix.rs)
  • 当手机开始预判你的下一步:一场正在颠覆生活的AI静默革命
  • 帕累托最优提示 是什么
  • Java 中的数据结构--简单汇总
  • 状态模式 VS 策略模式
  • Ubuntu开放端口
  • WebSoket的简单使用
  • AI内容检测的技术优势与应用场景
  • 代码随想录图论part03
  • TestStand API 简介
  • Python+Scrapy跨境电商爬虫实战:从亚马逊/沃尔玛数据采集到反爬攻克(附Pangolin API高效方案)