C#多线程池演示例程--下载图片
源代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Threading;
using System.Text.RegularExpressions;
using System.Diagnostics;
using System.Collections;
namespace WindowsFormsApplication14
{
public partial class Form1 : Form
{
public struct param
{
public int js;
public string url;
}
public delegate void listview1AddImg(String imgname,int js);
public listview1AddImg myDelegate;
public Form1()
{
InitializeComponent();
this.imageList1.ImageSize = new Size(130, 130);
this.listView1.LargeImageList = this.imageList1;
myDelegate = new listview1AddImg(listview1AddImgMethod);
}
p rivate void button1_Click(object sender, EventArgs e)
{
this.listView1.Items.Clear();
String url = @"http://image.baidu.com/i?tn=baiduimage&ct=201326592&cl=2&lm=-1&fr=&pv=&ic=0&z=0&word=%C3%C0%C5%AE&s=0";
Thread myThread1 = new Thread(downimg);
myThread1.Start((object)url);
}
p rivate void downimg(object url)
{
String imgUrl = null;
int js1=0;
param param1=new param();
WebClient web1 = new WebClient();
byte[] data1= web1.DownloadData((String)url);
String html = Encoding.Default.GetString(data1);
//从网页源码中分析出图片,并且投入线程池
MatchCollection m1 = Regex.Matches(html, @"<img\s+name='pn\d+'\s+src=""(?<smallpic>[\w:/\.,&=]*)",RegexOptions.IgnoreCase);
foreach (Match m in m1)
{
param1.js = js1;
js1++;
imgUrl = m.Groups["smallpic"].ToString();
param1.url = imgUrl;
ThreadPool.QueueUserWorkItem(new WaitCallback(dowork),(object)param1);
}
}
p rivate void dowork(object list1)
{
//下载图片
String imgname=null;
param param1 = new param();
param1= (param)list1 ;
WebClient web1 = new WebClient();
//Bitmap bmp = new Bitmap(web1.OpenRead(param1.url));
imgname = param1.js.ToString() + ".jpg";
web1.DownloadFile(param1.url, Application.StartupPath + "\\" +imgname);
this.listView1.Invoke(this.myDelegate, new object[] {imgname,param1.js});
}
******* void listview1AddImgMethod(String imgname,int js)
{
try
{
this.imageList1.Images.Add(Image.FromFile(Application.StartupPath + "\\" + imgname));
this.listView1.Items.Add(imgname);
this.listView1.Items[js].ImageIndex = js;
Debug.WriteLine(js);
Debug.WriteLine(imgname);
}
catch(Exception e)
{
Debug.WriteLine(e.Message);
}
}
}
}
源代码下载
转载于:https://www.cnblogs.com/hackpig/archive/2010/02/15/1668478.html
C#多线程池演示例程--下载图片相关推荐
- 2021-03-10 Python多线程爬虫快速批量下载图片
Python多线程爬虫快速批量下载图片 1.完成这个需要导入的模块 urllib,random,queue(队列),threading,time,os,json 第三方模块的安装 键盘win+R,输入 ...
- java【多线程】之同步下载图片
准备阶段: 首先需要在项目中导入一个Commons.io的jar包: 这个jar包可以在 点击这里过去下载 到这个页面之后往下翻,就可以看到这个jar包的下载地址了: 点击进去,找到我们要的IO 点击 ...
- java下载图片压缩包_java压缩文件和下载图片示例
本文实例为大家分享了java压缩文件和下载图片示例,供大家参考,具体内容如下 主页面index.xml 项目的主页 主页主页 湖南长沙 发布方式一...... 页面内容压缩演示--gzip 下载图片 ...
- python3爬虫系列16之多线程爬取汽车之家批量下载图片
python3爬虫系列16之多线程爬取汽车之家批量下载图片 1.前言 上一篇呢,python3爬虫系列14之爬虫增速多线程,线程池,队列的用法(通俗易懂),主要介绍了线程,多线程,和两个线程池的使用. ...
- 多线程下载图片并压缩
最近在做一个需求:从其他系统的ftp目录下载存储图片url的文件,然后读取文件中的url地址,根据地址下载图片后按天压缩成一个包,平均一个地址文件中包含4000个地址左右,也就是说一个文件扫描后需要下 ...
- Python 多线程下载图片
多线程下载图片 参考链接: Python标准库-urllib和urllib3 urllib实战2–urllib基础urlretrieve().urlcleanup().info().getcode() ...
- python爬虫之多线程threading、多进程multiprocessing、协程aiohttp 批量下载图片
一.单线程常规下载 常规单线程执行脚本爬取壁纸图片,只爬取一页的图片. import datetime import re import requests from bs4 import Beauti ...
- java 多线程下载图片_java多线程实现下载图片并压缩
最近在做一个需求:从其他系统的ftp目录下载存储图片url的文件,然后读取文件中的url地址,根据地址下载图片后按天压缩成一个包,平均一个地址文件中包含4000个地址左右,也就是说一个文件扫描后需要下 ...
- java线程池下载图片,压缩图片大小
java对于线程池下载图片,以及图片的压缩,删除 其中引用了thumbnailator 来进行压缩减少了我们工作量 maven地址 <!-- https://mvnrepository.com/ ...
- 多线程 python tcp 图片_Python第四周之网络编程TCP (服务器/客户端; 线程下载图片;线程版服务器和客户端(单人、多人)) UDP...
# 网络编程 # 计算机网络, 把多台独立自主的计算机,连接到网络,实现资源的共享 # Internet网,(互联网)eniac 1946美国大学第一台电子计算机 # # 一个TCP报文除了包含要传输 ...
最新文章
- 上海海事大学百度智慧交通车模介绍
- Selenium 页面自动化测试 面试 问题汇总
- 波音公司计划利用 3D 打印技术制作模块化卫星
- 老婆,我会好好爱你的
- mysql设计的步骤_mysql笔记8_数据库设计步骤
- ORACLE修改表空间方法
- 3_1 StrategyMode.cpp 策略模式
- Python实现快速的风格迁移
- java jtable defaulttablemodel_java – JTable和DefaultTableModel
- leetcode47. 全排列 II
- 【转】WebApi 身份认证解决方案:Basic基础认证
- conda指定路径_导出不带前缀变量的conda环境,该变量显示executab的本地路径
- SpringBoot面试题及答案整理
- SAP License:ABC作业成本法-平行记帐
- C# Base64方式的编码与解码
- CS224N刷题——Assignment1.11.2_Softmax神经网络基础
- django的orm获取字段去重值
- linux笔记:shell编程-正则表达式
- Mysql 临时表详解(temporary table)
- 数据结构与算法实验01-使用链表实现多项式乘法