从Wolframserver获取DC comics卡通人物数据
背景知识
DC comics是美国时代华纳旗下DC娱乐下属的一个漫绘图书出版商。
超人、蝙蝠侠之类漫画的始作俑者。
在Wolfram的眼下为止3750个PopularCurves数据中(所有下载数据有2-3GB之巨!)。当中有248个图片专属于DC comics里的漫画角色。
由于248个数据图片信息小于250MB。easy处理。这篇博客介绍怎样下载这248个角色的包含图片在内的信息,尤其是显示当中的图片。
代码实现
预备条件
想要下载这些数据,首先要确保自己有一台能够正常连接到internet的电脑,电脑上安装有wolfram的经典产品Mathematica最新版10.1. 由于数据有数百兆之多,所以,请确保足够的网络带宽。考虑到图片数据处理的问题,您的电脑的内存不能太小。
废话少说,直接上代码吧。
下载原始图片数据
这里的代码下载DC Comics数据中自带的图片信息并显示。最后再把它们合并在一个GIF动画文件里。
ClearAll["Global`*"];
dcComics=Quiet@Check[EntityValue[EntityClass["PopularCurve","DCComics"],"Entities"],50];
While[NumberQ@doComics,dcComics=Quiet@Check[EntityValue[EntityClass["PopularCurve","DCComics"],"Entities"],50]];
nCharacters=(Dimensions@dcComics)[[1]]
If[!ValueQ@dcImgList,dcImgList=ConstantArray[0,{nCharacters}]];
Do[dcImg=Quiet@Check[EntityValue[dcComics[[i]],"Image"],50];
While[NumberQ@dcImg,dcImg=Quiet@Check[EntityValue[dcComics[[i]],"Image"],50]];
dcImgLabel=Quiet@Check[EntityValue[dcComics[[i]],"Name"],50];
While[NumberQ@dcImgLabel,dcImgLabel=Quiet@Check[EntityValue[dcComics[[i]],"Name"],50]];
dcImgList[[i]]=Labeled@@{dcImg,ToString@i<>"."<>dcImgLabel};
Print@dcImgList[[i]],{i,1,nCharacters}];(*每下载一幅图片都显示它*)
(*把所有图片导出到一个GIF动画中,*)
Export["dcComics.gif",dcImgList,"TransitionEffect"->Background,"TransparentColor"->White]
到此为止,得到的这个GIF往往须要用gifsicle或convert之类处理才干正常使用。我用gifsicle处理的时候用的是这种命令:
gifsicle dcComics.gif -d120 "#0-247" > final.gif
结果是这种:
下载图片的參数方程信息及其个性化绘制
默认的DC Comics的图片数据中都有一个“十”字形的坐标轴,非常难看。
鉴于每幅图片都有自己的參数方程和參数区间的信息,能够获取这些信息之后,自己画一个纯净版的出来。比方,第142号图片女记者、超人嫂Lois Lane,代码例如以下:
mCurve=142;(*获取第142幅图片信息并用參数曲线方式单独显示它*)
mhp=Quiet@Check[(EntityValue[dcComics[[#]],"Properties"])&@mCurve,50];
While[NumberQ@mhp,mhp=Quiet@Check[(EntityValue[dcComics[[#]],"Properties"])&@mCurve,50]];
mhe=Quiet@Check[EntityValue[dcComics[[mCurve]],mhp[[10]]][t],50];
While[NumberQ@mhe,mhe=Quiet@Check[EntityValue[dcComics[[mCurve]],mhp[[10]]][t],50]];
hdom=Quiet@Check[EntityValue[dcComics[[mCurve]],mhp[[6]]],50];
While[NumberQ@hdom,hdom=Quiet@Check[EntityValue[dcComics[[mCurve]],hp[[6]]],50]];
mlabel=Quiet@Check[EntityValue[dcComics[[mCurve]],"Name"],50];
While[NumberQ@mlabel,mlabel=Quiet@Check[EntityValue[dcComics[[mCurve]],"Name"],50]];
Print[Style[mlabel,Red]];
ParametricPlot[mhe,{t,hdom[[1]],hdom[[2]]},PlotPoints->1500,PlotStyle->{Blue,Thickness[.002]},Axes->False]
图片例如以下:
总结
主要解决的问题
主要学习了处理下载中的time out exception的办法。
可能的问题
假设不能连接到互联网或wolfram server故障,上面的下载用代码将无法正常工作。假设数据有更新。则实际的数据个数可能不是如今的248个。142号图片也可能不是Lois Lane。
从Wolframserver获取DC comics卡通人物数据的更多相关文章
- request获取请求头和请求数据
package cn.itcast.request; import java.io.IOException; import java.io.InputStream; import java.io.Pr ...
- 获取股票历史数据和当前数据的API
关键字:股票,stock,API,接口 1.获取股票当前数据 新浪数据接口:http://hq.sinajs.cn/list={code}.{code}替换为股票代码,沪市股票代码加前缀sh,深市股票 ...
- Silverlight获取DataGrid选中的行数据
注意触发的事件为:CurrentCellChanged后台代码: /// <summary> /// 获取datagrid当前选中的单元格数据 /// 如果绑定的数据源为实体的话默认选中的 ...
- Android中获取网页表单中的数据实现思路及代码
在Android中获取网页里表单中的数据具体实现代码如下,感兴趣的各位可以参考过下哈,希望对大家有所帮助 MainActivity如下: 复制代码 代码如下: package cn.testjavas ...
- 怎样获取浏览器上次的会话数据(session)
怎样获取浏览器上次的会话数据: 要知道上次会话session_id是多少? 让cookie保存的PHPSESSID的值不要浏览器一退出就被删除了? 所以我们要设置自己的session_id,不要系统自 ...
- Android中获取网页表单中的数据
MainActivity如下: package cn.testjavascript; import java.util.StringTokenizer; import android.os.Bundl ...
- 项目中通过Sorlj获取索引库中的数据
在开发项目中通过使用Solr所提供的Solrj(java客户端)获取索引库中的数据,这才是真正对项目起实质性作用的功能,提升平台的检索性能及检索结果的精确性 第一步,引入相关依赖的jar包 第二步,根 ...
- Python获取股票历史、实时数据与更新到数据库
要做量化投资,数据是基础,正所谓"巧妇难为无米之炊" 在免费数据方面,各大网站的财经板块其实已提供相应的api,如新浪.雅虎.搜狐...可以通过urlopen相应格式的网址获取数据 ...
- 获取DataTable前几条数据
#region 获取DataTable前几条数据 /// <summary> /// 获取DataTable前几条数据 /// </summary> /// <param ...
随机推荐
- Andorid-如何为你的Android应用缩放图片
很难为你的应用程序得到正确的图像缩放吗?是你的图片过大,造成内存问题?还是图片不正确缩放造成不良用户体验的结果?为了寻求一个好的解决方案,我们咨询了Andreas Agvard(索尼爱立信软件部门), ...
- hdu 2825(ac自动机+状态压缩dp)
题意:容易理解... 分析:在做这道题之前我做了hdu 4057,都是同一种类型的题,因为题中给的模式串的个数最多只能为10个,所以我们就很容易想到用状态压缩来做,但是开始的时候我的代码超时了dp时我 ...
- PIG的配置
Pig是一个客户端应用程序,就算你要在Hadoop集群上运行Pig,也不需要在集群上装额外的东西.Pig的配置非常简单: 1.下载pig,网址http://pig.apache.org/ 2.在机器上 ...
- Codeforces 167B Wizards and Huge Prize(概率dp)
题意: n个人,开始有一个容量为k得背包,击败一个人背包可以获得一定容量或得到一个财富(放入背包内),给出击败每个人的概率,求至少击败l个人,且背包容量大于获得的总财富值的概率 分析: 状态好确定,d ...
- MorningSale 介绍
MorningSale是一个WEB端的收集门店销售数据,显示销售数据的简单系统,我相信该系统能够有效的提高销售公司在门店销售数据收集 汇总 分析方面的工作效率. 主要功能介绍如下: 1.查看某个店面 ...
- FILEtoJPG-神秘文件 -更新(软件BUG及建议可以在这里反馈)
FILEtoJPG-神秘文件(文件神隐助手) 论坛神器!彩虹系列作品之神秘文件(文件神隐助手),帮你隐藏文件的好帮手! 已更新,移除对winRAR的依赖 放张大图镇帖: 此图略丑,但是很有用,文末告诉 ...
- 解决YUM无法正常工作
1. 错误发生背景 在进行安装依赖包的时候,能够在YUM源中找到相关的RPM包,但是无法进行下载,在单独进行安装RPM包的时候能够进行安装,报错截图如下: 具体的报错信息如下: Error Downl ...
- JavaScript中的*top、*left、*width、*Height详解
来源:http://www.ido321.com/911.html html代码 1: <body> 2: <div class="father" id=&quo ...
- 1.1……什么是3G
移动通信技术的发展 第一代移动通信技术(1st - Generation),只能进行语音通话. 第二代移动通信技术(2nd - Generation),可以收发短信.可以上网,但速度只有几十Kbps, ...
- C# 引用类型的"祸害"
前端时间刚刚弄完一个项目,终于有时间来总结与回顾了. 项目需求:给用户发送邮件,邮件分为系统邮件和个人邮件,需要按时间.未读降序排列. 一开始以为,这是一个很简单的需求,给邮件建了一个对象: clas ...