【aspnetcore】抓取远程图片

找到要抓取的图片地址:http://i.imgur.com/8S7OaEB.jpg

抓取的步骤:

  1. 请求图片路径
  2. 获取返回的数据
  3. 将数据转换为stream
  4. 将stream转换为Image
  5. 保存Image

明晰了步骤,接下来就简单了,直接上代码

public class RemoteImageCatchUtil
{
    private static string[] ImageExts = new[] { "jpg", "jpeg", "png", "bitmap", "gif" };

    public static string Catch(string remoteImagePath, string saveFolder, int timeout = 2000)
    {
        try
        {
            var request = WebRequest.Create(remoteImagePath) as HttpWebRequest;
            request.Timeout = timeout > 0 ? timeout : 1000;
            using (var response = request.GetResponse() as HttpWebResponse)
            {
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    throw new Exception("远程访问失败");
                }
                else
                {
                    var ext = GetImageExtension(response.ContentType).ToLower();
                    if (!ImageExts.Contains(ext))
                    {
                        throw new Exception("非图片文件");
                    }

                    var stream = response.GetResponseStream();
                    var buffer = new byte[2048];
                    int count;
                    using (var ms = new MemoryStream())
                    {
                        while ((count = stream.Read(buffer, 0, buffer.Length)) != 0)
                        {
                            ms.Write(buffer, 0, count);
                        }

                        if (!Directory.Exists(saveFolder))
                        {
                            Directory.CreateDirectory(saveFolder);
                        }
                        var imageName = Path.GetRandomFileName() + "." + ext;
                        var imagePath = Path.Combine(saveFolder, imageName);
                        var image = new Bitmap(ms);
                        image.Save(imagePath);
                        return imageName;
                    }
                }
            }
        }
        catch(Exception ex)
        {
            throw ex;
        }
    }

    private static string GetImageExtension(string contentType)
    {
        if (contentType.StartsWith("image"))
        {
            return contentType.Split(@"/").Last();
        }
        return string.Empty;
    }
}

注意,这里的代码仅供测试,使用时请自行完善。

原文地址:https://www.cnblogs.com/diwu0510/p/10336444.html

时间: 2024-10-10 05:59:07

【aspnetcore】抓取远程图片的相关文章

ASP.NET下载远程图片保存到本地的方法、保存抓取远程图片

ASP.NET下载远程图片保存到本地的方法.保存抓取远程图片 2012-05-16 11:25:51     我来说两句      收藏    我要投稿 以下介绍两种方法:1.利用WebRequest,WebResponse 类WebRequest wreq=WebRequest.Create("http://up.2cto.com/2012/0516/20120516112717995.gif");    HttpWebResponse wresp=(HttpWebResponse)

抓取远程图片到本地,你会用什么函数?

方式有: <?php $img = file_get_contents('http://www.xfcodes.com/ img/baidu_logo.gif'); file_put_contents('1.gif',$img); echo '<img src="1.gif">'; 这段抓取远程图片至本地在运行中360极速.火狐.谷歌没有出现错误,可以正常运行. 另外还有: <?php $pagecontent = file_get_contents('http

百度UEditor编辑器关闭抓取远程图片功能(默认开启)

这个坑娘的功能,开始时居然不知道如何触发,以为有个按钮,点击一下触发,翻阅了文档,没有发现,然后再网络上看到原来是复制粘贴非白名单内的图片到编辑框时触发,坑娘啊............... 问题又来了:今天在写百度UEditor编辑器的[取远程图片功能]时有碰到:该功能如何关闭了? 又花了15分钟左右的时间查阅了[官方文档]以及[官方论坛],都没有找到解决办法,那就查阅下源文件看看,是否有相关的判断呢(本人JS非常烂) 于是马上查阅:ueditor.all.js文件,发现如下代码 // plu

PHP抓取远程图片

1 <?php 2 function getImage($url, $filename=""){ 3 if($url == ""){ 4 return false; 5 } 6 $ext = strrchr($url, "."); 7 if($ext!=".gif" && $ext!=".jpg" && $ext!=".bmp" &&

xheditor编辑器上传截图图片抓取远程图片代码

xheditor是一款很不错的开源编辑器,用起来很方便也很强大. 分享一个xheditor直接上传截图的问题解决方法. 第一步.设置参数 localUrlTest:/^https?:\/\/[^\/]*?(hsa\.com)\//i, remoteImgSaveUrl:'http://www.hsa.com/test_up.asp', 参数介绍:localUrlTest:意思是检查是否是本站地址格式.remoteImgSaveUrl:如果检查出来不是本站的图片,那么将会将图片的src属性值发送到

PHP抓取远程图片到本地保存

最近在工作中需要开发了一个用户素材功能,里面需要将网上的各种图片素材进行本地化存储.于是在网上找了一些相关资料,并根据自身开发需要,整理了一下主要的逻辑代码. /** * PHP将网页上的图片攫取到本地存储 * @param $imgUrl 图片url地址 * @param string $saveDir 本地存储路径 默认存储在当前路径 * @param null $fileName 图片存储到本地的文件名 * @return mix */ function crabImage($imgUrl

下载远程(第三方服务器)文件、图片,保存到本地(服务器)的方法、保存抓取远程文件、图片

将一台服务器的文件.图片,保存(下载)到另外一台服务器进行保存的方法: 1 #region 图片下载 2 3 #region 图片下载[使用流.WebRequest进行保存] 4 /// <summary> 5 /// 图片下载[使用流.WebRequest进行保存] 6 /// </summary> 7 /// <param name="fileUrl">图片URL地址(例如:http://img.baidu.com/video/img/video

Python爬虫抓取网页图片

本文通过python 来实现这样一个简单的爬虫功能,把我们想要的图片爬取到本地. 下面就看看如何使用python来实现这样一个功能. # -*- coding: utf-8 -*- import urllib import re import time import os #显示下载进度 def schedule(a,b,c): ''''' a:已经下载的数据块 b:数据块的大小 c:远程文件的大小 ''' per = 100.0 * a * b / c if per > 100 : per =

自动发送密码抓取远程日志用Shell脚本如何实现?

在linux系统中,如何用shell脚本抓取远程日志?分析线上的日志会有一个困境,机器太多,如果每台都登录上去看不太现实,但是下载下来更麻烦因为每台SCP都要求输入密码.于是我便写了一个自动抓取远程日志的脚本,实现在基本功能. 代码: #!/usr/bin/expect -f if { $argc !=1 && $argc !=2 } {send_user "没有输入远程日志文件名.\n"send_user "格式是:get.sh ${remote_log}