免费的Chrome插件--批量下载网页图片(设计者福音)

Image Downloader--快速使用链接

# Chrome图片批量下载插件使用分享

## 写在前面

最近发现了一个超好用的Chrome插件,专门用来批量下载网页图片的。作为一个经常需要收集图片素材的人,这个插件真的帮了我大忙,所以想分享给大家。

**插件名称**:Image Downloader

**插件地址**: https://chromewebstore.google.com/detail/daeljdgmllhgmbdkpgnaojldjkdgkbjg

## 主要功能

### 基础功能

- **一键扫描**: 打开插件就能自动找到页面上的所有图片,不用自己一个个找

- **智能筛选**: 可以设置只要大图,或者只要特定格式的图片,很方便

- **预览模式**: 下载前能看到缩略图,避免下载到不需要的图片

- **批量操作**: 选中多张图片后一次性下载,省时省力

- **格式全面**: JPG、PNG、GIF、WebP这些常见格式都支持

### 实用功能

- **自定义命名**: 可以按自己的习惯给文件命名,不会乱七八糟

- **自动分类**: 能按网站或日期自动建文件夹,文件管理更清晰

- **去重功能**: 重复的图片会自动跳过,不用担心下载重复内容

- **历史记录**: 记住之前下载过什么,避免重复劳动

## 技术细节(给开发者看的)

### 插件文件结构

```

extension/

├── manifest.json          # 插件配置文件

├── popup.html            # 弹窗界面

├── popup.js              # 弹窗逻辑

├── content.js            # 内容脚本

├── background.js         # 后台脚本

└── styles/

    └── popup.css         # 样式文件

```

### 用到的技术

- **Manifest V3**: 用的是Chrome最新的扩展API,比较稳定

- **JavaScript ES6+**: 代码写得比较现代化

- **Chrome Extension APIs**:

  - `chrome.tabs` - 操作浏览器标签页

  - `chrome.downloads` - 管理下载任务

  - `chrome.storage` - 保存用户设置

  - `chrome.scripting` - 在网页里注入脚本

## 怎么用

### 安装方法

1. 打开Chrome应用商店(就是那个网上应用店)

2. 搜索这个插件,或者直接点上面的链接

3. 点"添加至Chrome"

4. 弹出权限确认的时候点同意就行

### 基本操作

1. **找到有图片的网页**: 随便什么网站都行,只要有图片

2. **点击插件图标**: 在浏览器右上角工具栏里找到插件图标点一下

3. **等它扫描**: 插件会自动找页面上的所有图片,稍等几秒

4. **选择要下载的**: 看着缩略图选择你要的图片,可以多选

5. **开始下载**: 点下载按钮就开始了,很快的

### 进阶设置

如果你想更精细地控制下载,可以调整这些参数:

```javascript

// 我常用的配置

const config = {

  minWidth: 200,           // 太小的图不要,至少200像素宽

  minHeight: 200,          // 高度也是,避免下载小图标

  formats: ['jpg', 'png'], // 只要这两种格式

  maxFileSize: 5 * 1024 * 1024, // 单个文件最大5MB,太大的一般用不上

  downloadPath: 'Downloads/Images/', // 专门建个文件夹放图片

  namingPattern: '{domain}_{timestamp}_{index}' // 文件名包含网站名和时间

};

```

## 技术实现(开发者可以参考)

### 图片提取的原理

```javascript

// 这是插件找图片的核心代码

function extractImages() {

  const images = [];

  const imgElements = document.querySelectorAll('img');

  const bgImages = extractBackgroundImages();

  // 遍历所有img标签

  imgElements.forEach(img => {

    if (img.src && isValidImage(img)) {

      images.push({

        url: img.src,

        alt: img.alt || '',

        width: img.naturalWidth,

        height: img.naturalHeight

      });

    }

  });

  return [...images, ...bgImages];

}

```

### 下载逻辑

```javascript

// 批量下载的实现方式

async function downloadImages(imageList) {

  for (const image of imageList) {

    try {

      await chrome.downloads.download({

        url: image.url,

        filename: generateFileName(image),

        conflictAction: 'uniquify'  // 重名文件自动重命名

      });

    } catch (error) {

      console.error('下载失败:', error);

    }

  }

}

```

## 性能表现

### 内存使用

- 用了懒加载,不会一次性加载所有图片,比较省内存

- 会自动清理不用的数据,不会越用越卡

- 一次处理的图片数量有限制,避免浏览器卡死

### 下载速度

- 有下载队列管理,不会同时下载太多导致网络拥堵

- 支持断点续传,网络不好的时候也能继续下载

- 下载失败会自动重试,不用手动操作

## 安全性

### 权限方面

- 插件只要必要的权限,不会乱要权限

- 你的数据都存在本地,不会上传到什么服务器

- 隐私模式下也能正常使用,比较放心

### 内容安全

- 会检查图片链接是不是正常的,避免下载奇怪的东西

- 有防护机制,不会被恶意网站攻击

- 下载前会验证文件类型,确保是真的图片

## 兼容性

### 浏览器要求

- Chrome 88以上版本(基本上现在的Chrome都行)

- Microsoft Edge 88+(新版Edge也没问题)

- 其他用Chromium内核的浏览器应该都可以

### 网站适配

- 普通网站肯定没问题

- 那种动态加载图片的网站也支持

- Vue、React这些单页应用也能用

- 懒加载的图片也能识别到

## 遇到问题怎么办

### 常见问题解决

1. **图片下载不了**

   - 先看看图片链接是不是坏了,有些网站图片链接会过期

   - 可能是网站有防盗链,这种情况比较少见但确实存在

   - 检查一下浏览器的下载权限设置

2. **插件点了没反应**

   - 最简单的方法:刷新页面再试试

   - 看看插件有没有被禁用了,在扩展管理里检查一下

   - 清理一下浏览器缓存,有时候缓存会搞鬼

3. **下载特别慢**

   - 可以调整一下同时下载的数量,别设太多

   - 检查网络连接,可能是网速问题

   - 有些网站限速,这个没办法,只能慢慢等

## 开发者参考

### API接口

```javascript

// 插件的消息处理机制

chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {

  switch(request.action) {

    case 'extractImages':

      return handleImageExtraction();  // 提取图片

    case 'downloadImages':

      return handleBatchDownload(request.images);  // 批量下载

    default:

      return false;

  }

});

```

### 二次开发

如果你想基于这个插件做些改动,可以考虑:

- 自定义过滤规则,比如按关键词筛选

- 添加新的图片格式支持,比如AVIF

- 集成云存储服务,直接上传到网盘

## 版本更新记录

### 最近几个版本

- **v2.1.0**: 新增WebP格式支持,下载速度也快了不少

- **v2.0.0**: 升级到Manifest V3,更安全了,但可能有些小bug

- **v1.5.0**: 加了批量重命名功能,文件管理更方便

- **v1.0.0**: 最初版本,功能比较基础

## 我的使用感受

用了这个插件几天了,真的很方便。以前收集图片素材要一张张右键保存,现在几秒钟就能把整个页面的图片都下载下来。

特别是做设计的时候找参考图,或者写文章需要配图,这个插件能省不少时间。界面也挺简洁的,不会搞得很复杂。

总的来说,如果你经常需要从网页下载图片,这个插件绝对值得试试。免费的,也不占什么资源,挺实用的。

---

浏览并下载网页上的图片。 Image Downloader不出售,并且将始终是免费,开源的,并且没有广告或任何形式的跟踪算法! 您可以在此处找到源代码:https://github.com/vdsabev/image-downloader Image Downloader =================如果您需要从网页批量下载图像,使用此扩展程序,您可以:-查看页面包含的图像以及链接到的图像-按宽度,高度和URL进行过滤; 支持通配符和正则表达式-(可选)仅显示链接中的图像-通过单击图像选择要下载的图像-使用专用按钮下载或在新标签页中打开单个图像-自定义图像的显示宽度,列,边框大小和颜色-隐藏过滤器,不需要的按钮和通知按下“下载”按钮时,所有选定的图像都将保存到Chrome的默认下载目录,或者如果指定子文件夹名称,则保存到其中的目录。 警告:如果尚未设置默认的下载目录,则必须手动选择每个图像的保存位置,这可能会打开许多​​弹出窗口。 不建议您尝试一次在没有默认下载目录的情况下一次下载太多图像。 已知问题===============此扩展程序无法始终提取单击照片时打开的全分辨率图像(例如,在Facebook相册中)。 那是因为页面没有直接链接到图像,而是使用了脚本。 如果您需要那种功能,那么即使您无法大量下载图像,也可以使用诸如Hover Zoom的其他扩展。 更改日志=============== 2.4.2:-Chrome不允许访问跨域CSS规则的解决方法2.4.1:-修复了无效URL会破坏扩展名的问题- https://github.com/vdsabev/image-downloader/issues/23-将Zepto.js更新为1.2.0 2.4:-添加了在下载2.3前重命名文件的选项:-添加了对BMP,SVG和WebP图像的支持-增加了对相对URL的支持-通过搜索更少的元素提高了弹出窗口的加载速度-chrome.runtime 2.2代替了不推荐使用的chrome.extension调用:-删除了访问标签的不必要权限-删除了由于提示而导致的捐赠提示一些用户认为它在第一次出现后并没有消失; 现在,将在首次安装时打开选项页-保存URL过滤器的值-修复某些尺寸调整问题的另一种尝试2.1:-添加了图像宽度/高度过滤器-由于某些原因,一次性重置了所有设置遇到尺寸问题的人-删除了按URL排序选项2.0:-添加了将文件保存到子文件夹的功能-利用Google Chrome下载API-实施了基于网格的更简洁设计-单击图像URL文本框现在将自动选择文本以便用户可以复制文本-修复了一些小的显示问题-添加了列数设置,删除了边框样式设置-选项页1.3中添加了捐赠按钮:-现在,样式标签中使用的图像也将包含在列表的末尾。 仅包含来自元素的内联样式属性的图像。 -新增了对数据URI的支持-若干错误修复和优化1.2:-更改了要显示在只读文本框中的图像上方的URL-将图像复选框移至顶部,并在每个图像复选框下方添加了打开和下载按钮-最初禁用了“下载”按钮和“所有”复选框-引入了一些新选项来隐藏过滤器,按钮和通知-删除了正文宽度选项; 弹出窗口的宽度现在相对于最大图像宽度选项重新调整大小-简化了设计1.1:-修复了最小和最大图像宽度的保存-在图像本身上方添加了URL以及用于切换的选项-添加了通配符过滤器模式(沿正常和正则表达式)-现在将保存所选过滤器的状态-将“按URL排序”选项移回过滤器-在选项页面中添加了“清除数据”按钮。 尽管该扩展程序尚未使用大量本地存储,但有人可能会喜欢此选项。 -重构了大量代码,尤其是本地存储1.0.13的使用:-添加了一条通知,使用户知道下载已开始-添加了一些动画并进一步完善了选项通知-修复了一些正在处理的事件处理程序多次附加1.0.12:-迁移到jQuery-为“所有”复选框实现了不确定的状态-如果未选中任何图像,则将禁用“下载”按钮-修复了带有重置选项的错误-现在用户可以选择保存重置值或只是通过重新加载页面来取消重置-就像通知1.0.11中所述:-更改了下载机制以支持Chrome v21 +-添加了“仅显示链接的图像”过滤器选项,当您只想下载页面上URL中的图像。 1.0.10:-添加了下载确认1.0.9:-图片数量现在将显示在“所有”复选框1.0.8旁:-添加了对锚定标记中的图片URL的检测; 请注意,此功能将不会检测不具有.jpg,.jpeg,.gif或.png文件扩展名的URL-它依赖于正则表达式,以避免可能向外部服务器发送1.0.7的数百个请求:-已删除当您按下“下载”时弹出的桌面通知系统,显示的文字描述应该易于控制(通过“选项”)并且不易受到干扰; 这也需要较少的扩展权限-添加了隐藏下载通知的选项; 大
运行环境 .NET Framework2.0 开发工具 Microsoft Visual Studio 2005 二. 部分代码说明(主要讲解异步分析和下载): 异步分析下载采取的策略是同时分析同时下载,即未等待数据全部分析完毕就开始把已经分析出来的图片链接开始下载下载成功的均在List框链接前面划上了√ ,未能下载图片有可能是分析错误或者是下载异常。 1. 异步分析部分代码 /// /// 异步分析下载 /// private void AsyncAnalyzeAndDownload(string url, string savePath) { this.uriString = url; this.savePath = savePath; #region 分析计时开始 count = 0; count1 = 0; freq = 0; result = 0; QueryPerformanceFrequency(ref freq); QueryPerformanceCounter(ref count); #endregion using (WebClient wClient = new WebClient()) { AutoResetEvent waiter = new AutoResetEvent(false); wClient.Credentials = CredentialCache.DefaultCredentials; wClient.DownloadDataCompleted += new DownloadDataCompletedEventHandler(AsyncURIAnalyze); wClient.DownloadDataAsync(new Uri(uriString), waiter); //waiter.WaitOne(); //阻止当前线程,直到收到信号 } } /// /// 异步分析 /// protected void AsyncURIAnalyze(Object sender, DownloadDataCompletedEventArgs e) { AutoResetEvent waiter = (AutoResetEvent)e.UserState; try { if (!e.Cancelled && e.Error == null) { string dnDir = string.Empty; string domainName = string.Empty; string uri = uriString; //获得域名 http://www.sina.com/ Match match = Regex.Match(uri, @"((http(s)?://)?)+[\w-.]+[^/]");//, RegexOptions.IgnoreCase domainName = match.Value; //获得域名最深层目录 http://www.sina.com/mail/ if (domainName.Equals(uri
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值