关于FTP,先从怎么创建开始说起,很简单,步骤就两个

① 电脑-右键管理--本地用户组--添加用户名,密码(用于FTP的用户名、密码)

② IIS 新建FTP站点,命名,指定端口号、FTP文件路径

接下来就是进行访问,网上有很多的FTP 帮助类,关于上传、下载,重命名、获取文件列表之类的方法。就不在赘述,这里主要讲下怎么获取图片,直接显示,而不必下载到本地。毕竟我这里的需求场景是实时刷新图片,不可能每个客户端都将摄像头识别到的目标图片下载到本地。其实当我们客户端在加载FTP文件的时候,就已经在执行下载的操作了,只是先将文件加载(下载)到内存中。如果要保存到本地,就指定一个物理路径,将加载到文件保存到该路径上即可(这一点查看FTP帮助类即可发现)。

下面我们要在客户端上显示该图片,首先最简单的方法便是,拼接图片路径,给picturebox 控件赋值

            //如果FTP站点指定路径为  D:\Images\list,图片的路径为 D:\Images\list\A\20181024\xx.jpg
//则 imgPath 为 A\20181024
//imgPath 图片所在的FTP路径(不包含图片名)
//imgName 图片名
//连接服务器FTP
var url = string.Format("ftp://{0}:{1}@{2}/{3}/{4}", "fan", "", "192.168.0.101:2048", Path, imgName);
//直接赋值
pb_img.LoadAsync(url);

这种方法确实比较简单,但是有一个缺点,就是在频繁点击图片(加载大图图片)的时候,有时候程序会失去响应(并导致大图图片无法显示)。所以如果是单单显示图片,没有进一步的后续操作时,可以直接采用这种方法。此外还有一种方法,就是在内存中下载FTP图片,然后将其用byte字节数组加载出来,再用MemoryStream内存流包裹,最后将该流转换为图片。赋值并显示

        //该路径为 ftp完整路径 带用户名,密码,端口号,图片路径,图片名,参考上一种方法中介绍
public static Image ReadImg(string ftpImgpath)
{
try
{
byte[] buffer = new WebClient().DownloadData(ftpImgpath);
//byte[] 转内存流
MemoryStream ms = new MemoryStream(buffer);
Image img = Image.FromStream(ms, true);
//流用完要及时关闭
ms.Close();
return img;
}
catch (Exception)
{
//转换失败,显示默认图
var path = System.Windows.Forms.Application.StartupPath;
var ary = path.Substring(, path.IndexOf("bin"));
var imgpath = ary + "\\img\\notfount.jpg";
PictureBox pb = new PictureBox();
pb.ImageLocation = imgpath;
return pb.Image;
} }

这种方法比较稳妥,暴力点击多次暂未发现啥异常。

读取FTP 图片文件,并显示,非下载的更多相关文章

  1. FileReader:读取本地图片文件并显示

    最近忙得比狗还惨,导致长时间没能更新文章,真心对不住啊.抽空整理了下关于在页面上读取和显示本地图片的实例文章,本文通过实例讲解如何使用支持FileReader浏览器的用户将能够通过一个file inp ...

  2. 【ABAP系列】SAP ABAP 实现FTP的文件上传与下载

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 实现FTP的文 ...

  3. [转]opengl入门例题(读取bmp图片,并显示)

    #include<gl/glut.h> #define FileName "bliss.bmp" static GLint imagewidth; static GLi ...

  4. paip.解决中文url路径的问题图片文件不能显示

    paip.解决中文url路径的问题图片文件不能显示 #现状..中文url路径 图片文件不能显示 <img src="img/QQ截图20140401175433.jpg" w ...

  5. 解决“用PicGo-2.3.0-beta5 + GitHub做博客图床,github仓库图片文件不显示”的问题记录(备忘)

    解决"用PicGo-2.3.0-beta5 + GitHub做博客图床,github仓库图片文件不显示"的问题记录(备忘) 历时几个小时百度,终于靠自己理解解决了GitHub仓库图 ...

  6. android 读取本地json文件 解决显示乱码显示

    1.读取本地JSON ,但是显示汉字乱码 public static String readLocalJson(Context context,  String fileName){         ...

  7. jdbc读取数据库图片文件

    package 读取大文件.read; import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.I ...

  8. 记crt 在windows与linux服务器之间利用ftp进行文件的上传下载

    我们首先来熟悉一些相关的命令以及操作: ls      #展示linux服务器当前工作目录[你连接sftp时所处的目录]下的所有文件以及文件夹 lcd  F:\niki      #绑定你在windo ...

  9. vue使用axios读取本地json文件来显示echarts折线图

    编辑器:HBuilderx axios文档:http://www.axios-js.com/zh-cn/docs/ echarts实例:https://echarts.apache.org/examp ...

随机推荐

  1. linux 文件属性(转)

    1.  文件类型 - 普通文件 d 目录文件 l 链接文件 b 块设备文件 c 字符型设备文件 s socket文件 p 管道类型文件 块设备文件主要是指慢速设备,比如hd硬盘,数据主要是分块存储,所 ...

  2. STS的安装以及IDEA安装和破解过程

    一.STS的下载 1·下载地址:直接百度搜索STS,选择Download STS 3 2.选择电脑对应的版本 直接下载 3.安装包解压后在有jdk的情况下就可以直接使用 二.IDEA的安装 下载网址: ...

  3. StringBuild使用与原理

    StringBuild的使用: 1.创建: StringBuilder sb=new StringBuilder(); StringBuilder sb=new StringBuilder(200); ...

  4. iOS 如何查看APP的jetsamEvent日志

    1.如何在iPhone上查看 设置-通用-分析-分析数据- JetsamEvent+日志 打头的系统日志. 2.如何在Mac 上查看此类分析日志 1.手机链接MAC 2.打开iTunes,点开手机图标 ...

  5. 1. Scala概述

    1.1 概述 联邦理工学院洛桑(EPFL)的Martin Odersky于2001年开始设计Scala Scala是Scalable Language的简写,是一门多范式的编程语言 1.2 Scala ...

  6. 在队列中join()与task_done()的关联性

    1.基础解释: Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号 Queue.join() 实际上意味着等到队列为空,再执 ...

  7. 树莓派与Linux系统之间文件传输

    最近因为要学习Python,于是把放在家里接了一年灰的树莓派又给搜出来了,刚买那会也捣鼓了好一阵子, 基本操作都学会了,但现在又忘光了,只能又从头开始搞了,首先第一个要解决的是怎么把文件从电脑传输到树 ...

  8. model中的自动验证 $_validate $_auto

    普通模式: <?php class UserModel extends RelationModel{ /**自动验证**/ protected $_validate = array( /**ar ...

  9. tensorflow-用DASC结合Inception-v3对imagenet2012聚类实现

    一.目的 以imagenet2012作为数据集,用Inception-v3对图像提取特征作为输入,来训练一个自编码器. 以上作为预训练模型,随后在该自编码器的基础上,中间加入一个自表示层,将最终学习到 ...

  10. 我的FPGA之旅4---led流水灯

    [1]输入端口不能使用reg数据类型,因为reg类型对应的FPGA内部的寄存器.这样理解:reg寄存器具有记忆功能;而wire类型数据就相当于一根连线.input输入信号用wire连线进来就好:out ...