整理 | 琥珀&胡巍巍
责编 | 唐小引
出品 | CSDN、AI科技大本营
几天前,Erlang 之父 Joe Armstrong 刚刚离开人世,享年 68 岁。今天,在计算机科学领域,我们再次听到了一个让人悲恸的消息。4 月 23 日,人工智能学科创始研究者之一、斯坦福大学计算机科学系 Kumagai 教授 Nils J. Nilsson 逝世,享年 86 岁。
卓越的计算机科学家、人工智能先驱 Nils J. Nilsson
Nils J. Nilsson(1933 年 2 月 6 日 - 2019 年 4 月 23 日),斯坦福大学计算机科学系 Kumagai 教授,曾在 1953 年获得斯坦福大学电子工程博士学位。他在斯坦福国际研究院(SRI International)人工智能中心工作了 23 年,致力于将统计学和神经网络方法用于模式识别中。期间,他曾参与 A * 启发式搜索算法和 STRIPS 自动规划系统,以及对集成移动机器人 SHAKEY 的共同研发工作。
在此期间,Nilsson 教授还出版过五本人工智能相关的教科书,并教授人工智能和机器学习方面的课程。这五本书分别是:《 Problem-Solving Methods in Artificial Intelligence》(1971)、《Principles of Artificial Intelligence》(1980)、《Artificial Intelligence: A New Synthesis》(1998)、《 The Quest for Artificial Intelligence: A History of Ideas and Achievements》(2010)、《Understanding Beliefs》(2014)。
《The Quest for Artificial Intelligence》(《人工智能的追求:思想和成就的历史》)
链接:http://ai.stanford.edu/~nilsson/QAI/qai.pdf
Nilsson 教授曾担任 Artificial Intelligence and of the Journal of Artificial Intelligence Research 的编辑委员会成员,Journal of the Association for Computing Machinery 的当地编辑。同时,他还是美国人工智能促进协会(AAAI)的前任主席和 Fellow,AAAS Fellow,国家工程院院士以及瑞典皇家工程科学院外籍院士。
2011 年,Nilsson 教授因 “人工智能和智能系统领域的重大贡献” 入选 IEEE 智能系统公司的 AI 名人堂。
和蔼可亲的斯坦福教授
Nilsson 教授桃李满天下,在《从程序媛到全球研发副总裁,技术女神进击史!》一文中 CSDN 所分享的 Hulu 全球研发副总裁、斯坦福计算机科学博士诸葛越便是他的学生。在斯坦福,诸葛越曾跟着 Nilsson 教授做过一个扫地机器人的项目,认真的她,直到二十多年后今天,还保留着当时的笔记。
今天,当 Nilsson 教授离世,诸葛越博士通过 CSDN 发表了她的悼念与缅怀:“Nils J. Nilsson 教授是我刚到斯坦福的时候人工智能入门课 CS221 的老师。Nilsson 和蔼而可亲近。因为我本科是这个专业,所以和 Nilsson 老师交流也比较多,有幸得到他从学习到项目到其他方面的指导。Nilsson 教授在 AI 领域建树累累,桃李满天下,祝愿安息。”
同时,深度学习三巨头之一、2019 图灵奖得主 Yan LeCun,现 Landing.AI 公司 CEO 吴恩达教授等很多 AI 界的人士也通过社交媒体发表了他们的悼念。
感谢和蔼可亲、教书育人的 Nils J. Nilsson 教授,一生为计算机科学、人工智能所作的杰出贡献,缅怀!
大牛程序员分享,BAT为何得不到他,就要复制他?
System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!"
点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。
你点的每个“在看”,我都认真当成了喜欢


目录
1. 引言
Image
组件是 Flutter 中用于显示图片的核心组件,它支持多种图片来源(本地、网络、资源文件等),并提供丰富的调整选项,如缩放、适应模式、缓存等。本文将详细介绍 Image
组件的使用方式及其重要参数。
2. 加载图片的方式
Flutter Image
组件支持多种方式加载图片:
类型 | 说明 | 代码示例 |
---|---|---|
Asset 资源 | 加载本地资源图片 | Image.asset('assets/images/logo.png') |
Network 网络 | 加载远程图片 | Image.network('https://example.com/img') |
File 文件 | 加载设备存储图片 | Image.file(File('path/to/image.jpg')) |
Memory 内存 | 加载二进制数据 | Image.memory(bytes) |
2.1 本地图片
首先,需要在 pubspec.yaml
文件中添加资源路径:
- flutter:
- assets:
- - assets/images/ic_input_et.png
然后,在代码中使用:
- Image.asset(
- 'assets/images/ic_input_et.png',
- width: 100, // 显式设置宽度
- height: 200, // 显式设置高度
- ),
2.2 网络图片
- Image.network(
- 'https://i-blog.csdnimg.cn/direct/943bcea21349401399ae61542b3e9f44.png',
- width: 500, // 显式设置宽度
- height: 200, // 显式设置高度
- )
2.3 本地文件图片
适用于加载存储在设备本地的图片(此处需要权限,咱们后面统一写一下):
- import 'dart:io';
- Image.file(
- File('/storage/emulated/0/Download/ReBang1101.jpg'),
- width: 200, // 显式设置宽度
- height: 100, // 显式设置高度
- ),
2.4 内存图片
适用于需要动态加载的图片数据,如相机捕获或网络流数据:
Image.memory(uint8ListData);
3. fit
参数:控制图片适应方式
BoxFit
枚举控制图片如何适应 Image
组件的边界。
BoxFit 值 | 说明 |
---|---|
fill | 拉伸填充整个容器,可能变形 |
contain | 适应容器,保持原比例,可能留白 |
cover | 填充容器,可能裁剪 |
fitWidth | 宽度填满,高度按比例缩放 |
fitHeight | 高度填满,宽度按比例缩放 |
none | 原始大小显示,不缩放 |
示例:
- Image.network(
- 'https://example.com/sample.jpg',
- fit: BoxFit.cover,
- )
4. 高级应用技巧
4.1 占位符与淡入效果
- FadeInImage.assetNetwork(
- placeholder: 'assets/loading.gif', // 占位图
- image: 'https://example.com/photo.jpg', // 实际图片
- fadeInDuration: Duration(milliseconds: 500), // 淡入时长
- fit: BoxFit.cover,
- )
4.2 图片缓存管理
Flutter 默认对网络图片进行缓存,可以使用 cached_network_image
插件优化加载性能。
安装插件:
- dependencies:
- cached_network_image: ^3.4.1
使用示例:
- CachedNetworkImage(
- imageUrl: 'https://i-blog.csdnimg.cn/direct/943bcea21349401399ae61542b3e9f44.png',
- placeholder: (context, url) => LoadingSpinner(),
- errorWidget: (context, url, error) => Icon(Icons.error),
- memCacheHeight: 400, // 内存缓存高度
- maxWidthDiskCache: 1024, // 磁盘缓存最大宽度
- )
4.3 图片裁剪与滤镜
- ClipRRect( // 圆角裁剪
- borderRadius: BorderRadius.circular(16),
- child: Image.asset('assets/product.jpg'),
- ),
-
- ShaderMask( // 添加渐变蒙版
- shaderCallback: (rect) => LinearGradient(
- colors: [Colors.black, Colors.transparent]
- ).createShader(rect),
- child: Image.network('https://example.com/banner.jpg'),
- ),
-
- ImageFiltered( // 高斯模糊
- imageFilter: ImageFilter.blur(sigmaX: 2, sigmaY: 2),
- child: Image.file(File('path/to/image.jpg')),
- )
5. 性能优化指南
5.1 资源图片规范
使用 2.0x
、3.0x
目录实现多分辨率适配。
- # pubspec.yaml 配置示例
- flutter:
- assets:
- - assets/images/2.0x/ic_input_et.png # 适配 @2x 屏幕
- - assets/images/3.0x/ic_input_et.png # 适配 @3x 屏幕
2. 大图加载策略
- Image.asset(
- 'assets/large_map.jpg',
- cacheWidth: 800, // 指定解码尺寸
- cacheHeight: 600,
- isAntiAlias: true, // 开启抗锯齿
- )
5.3 内存管理方案
- // 使用 ResizeImage 限制解码尺寸
- ResizeImage.resizeIfNeeded(
- width: 400,
- height: 300,
- imageProvider: AssetImage('assets/high_res.jpg'),
- )
6. 最佳实践总结
-
资源管理
-
使用
2.0x
、3.0x
目录实现多分辨率适配 -
优先选择 WebP 格式减小包体积
-
-
网络图片
-
必须处理加载错误和超时情况
-
推荐使用 CDN 加速并开启 HTTPS
-
-
性能优化
-
对大图使用
cacheWidth/cacheHeight
限制解码尺寸 -
列表视图采用
ListView.builder
懒加载
-
-
内存安全
-
页面销毁时及时释放图片资源
-
监控内存使用量(可通过 DevTools)
-
-
高级效果
-
组合使用
ShaderMask
与ClipPath
实现复杂形状 -
通过
ImageFilter
实现动态滤镜效果
-
相关推荐
Flutter 基础组件 Text 详解-CSDN博客文章浏览阅读1.1k次,点赞42次,收藏25次。Text 组件是 Flutter 中最常用的 UI 组件之一,用于显示文本内容。它支持样式自定义、多行显示、溢出控制等功能,适用于各种文本场景。本文将详细介绍 Text 组件的使用方式及其重要参数。http://iyenn.com/rec/1821633.htmlFlutter 基础组件 Scaffold 详解-CSDN博客文章浏览阅读493次,点赞21次,收藏23次。Scaffold 主要在 MaterialApp 主题下使用,它是实现Material Design基本视觉布局结构的Widget,它为应用提供了一个可定制的结构,包括 AppBar(应用栏)、Drawer(侧边栏)、FloatingActionButton(浮动按钮)、BottomNavigationBar(底部导航栏) 等。本文将详细解析 Scaffold 的功能和使用方法。
http://iyenn.com/rec/1821634.html
评论记录:
回复评论: