图片

沙盒机制

蹲街弑〆低调 提交于 2020-11-21 03:20:03
数据持久化的本质:将数据读成文件,存储在本地. 沙盒机制: 沙盒就是系统针对与每个应用程序在本地生成的文件夹,名字随机生成.对于不同的应用程序,不能访问其他程序沙盒内的文件,对于该程序起到保护作用. 沙盒内的文件夹: 1.Documents:用来存储长久保存的数据 2.XXXX.app程序的包,包含程序加载所需的所有资源(readONLY , 不可修改).平时使用的NSBundle 就是该包 3.Library: A:Caches: 本地缓存,存储想暂时保存的数据,比如下载的视频,音频,图片.都存储在该文件夹下.(video ,Musics,Images) B:Preferences: 存储用户的偏好设置,比如,是否是第一次启动. 4.tmp:存储还未下载完 的视频音频,当下载完把文件转移到caches文件夹. 来源: oschina 链接: https://my.oschina.net/u/865518/blog/315776

【转】用node.js爬取网站图片并保存

故事扮演 提交于 2020-05-02 17:20:35
原文: http://www.jianshu.com/p/177ca8aaf6fb 昨天是传说中的程序员节,虽然我对于这个并无感,但还是来搞点事吧,写一个最简单的爬虫,抓取图片并保存在本地,如下,我们抓取的是 http://www.ivsky.com/ 这个网址的图片。 用到的模块:cheerio(一个在服务端操作DOM的模块)、fs(文件模块)、http 代码如下: var http = require("http"); var fs = require("fs"); var cheerio = require("cheerio"); var url = "http://www.ivsky.com/"; function download ( url,callback ) { http.get( url,function(res){ var data = ""; res.on("data",function(chunk){ data += chunk; }); res.on("end",function(){ callback(data) }) }).on("error",function(err){ console.log(err) }) } download( url,function( data ) { if(data){ var $=cheerio.load(data);

Facebook图片存储架构技术全解析

﹥>﹥吖頭↗ 提交于 2020-03-17 15:13:02
某厂面试归来,发现自己落伍了!>>> 照片应用程序是Facebook最流行的功能。直至目前为止,Facebook的用户已经上传了超过150万幅照片,这使得Facebook成为最 大的照片共享网站。对于每一个上传的照片, Facebook生成并保存成4种不同大小的图像,即总共有60亿的图片占1.5PB的存储容量。目前的增长速度是每星期220万个新照片,即每周消耗 25TB的额外存储空间。在高峰期,平均每秒会上传550,000幅图像。这些数字给Facebook的照片存储基础架构带来了严重的挑战。 NFS照片基础架构 旧的照片基础架构包含几个层次: ◆上传层接收用户上传的照片,测量原始图像的大小并将其保存到NFS存储层。 ◆照片服务层接收HTTP照片请求,并向用户提供保存于NFS存储层的照片。 ◆NFS存储层建立于商业存储设备之上。 由于每个图像存储在自己的文件内,所以根据命名空间目录和文件inode(内节点),在存储层产生了大量的元数据。这些元数据量远远超过了NFS存 储层的缓存能力,导致了上传和读取每张照片时成倍的I/O操作。整个照片服务的基础架构由于NFS存储层的大量元数据负荷而成为了一个瓶颈,这就是 Facebook严重依赖CDNs来提供照片服务的原因之一。以下两个附加的优化部署,用来在一定程度上减轻这个问题: Cachr :一个缓存服务层,用来缓存Facebook中较小的

IOS之支持高分辨率的显示屏(译文)

本小妞迷上赌 提交于 2020-02-29 09:14:03
基于IOS SDK 4.0及以后版本的应用程序需要能够在不同分辨率的设备下运行。IOS以一种简单的方式可以支持多分辨率屏幕的情况。大部分处理不同类型屏幕的工作已经由系统框架处理。但应用程序本身也需要做些工作来修正位图图片,如果应用本身要利用像素,也需要做额外的工作。 支持高分辨率显示屏的清单 为了适应具有高分辨率显示屏的设备,需要做如下几项: 在应用程序包中,为每个图片资源提供高分辨的图片 为应用和文档图标提供高分辨率的图片 基于矢量的图形和内容,要如以前一样继续使用Core Graphics和UIKit的drawing代码 直接使用Core Animation图层时,在绘画之前可能需要调整比例系数(scale factor) 使用OpenGL ES进行绘画,要判断是否需要加入高分辨率绘画支持,要合理的设置图层的比例系数 对于创建的自定义图片,需要更新创建图片的代码,要考虑比例系数的影响 如果应用中直接提供了Core Animation图层的内容,要按需要调整代码 无偿得到的绘画优化 IOS中的绘画技术提供了强大的支持,帮助开发者以最佳的方式渲染绘画内容,而不管当前显示屏所处的是何种分辨率。 标准的UIKit views(text views , buttons , table views , 等等)在任何分辨率下会保证正确的渲染 基于矢量的内容( UIBezierPath ,

Android之如何获取视频或者图片的缩略图

最后都变了- 提交于 2020-01-08 20:10:25
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> import java.io.File; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.media.ThumbnailUtils; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.widget.ImageView; /** * 获取图片和视频的缩略图 * 这两个方法必须在2.2及以上版本使用,因为其中使用了ThumbnailUtils这个类 */ public class AndroidTestActivity extends Activity { private ImageView imageThumbnail; private ImageView videoThumbnail; /** Called when the activity is first created. */ @Override public void onCreate(Bundle

如何为你的Android应用缩放图片[原创翻译]

喜欢而已 提交于 2020-01-07 13:15:49
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 很难为你的应用程序得到正确的图像缩放吗?是你的图片过大,造成内存问题?还是图片不正确缩放造成不良用户体验的结果?为了寻求一个好的解决方案,我们咨询了Andreas Agvard(索尼爱立信软件部门),让他分享一些关于这方面的经验。 注意: 本文没有完整显示出代码示例。你可以 下载本文的PDF ,来看完整的代码示例。 在索尼爱立信软件部门工作,我经常遇到需要图片缩放的应用,例如:当处理别人或者网络上提供的图片。缩放是必要的,因为通常情况下的图片不是你想要呈现的那样。 典型的例子,如果你正在为你的应用开发一个LiveView™扩展。大多数人开发应用利用LiveView™和其他第二屏幕设备,可能需要重新调整图片,重要的是要保持适当的缩放比例和图像质量。当然,在很多情况下,改变图片尺寸是一个有点困难,但是很有效的途径。 ImageView解决了许多的图片缩放问题,首先,至少你在设置完一个图片源后,不用去解码或缩放图片。但有时需要你自己去解码控制,这是本教程的用武之地。随着本教程,我写了一个代码示例,下载 图片缩放代码示例 。在文本中呈现的效果,可以通过编译和运行该项目来看到。 孤立的问题 我做这个教程,是因为我已经有一些实用方法来实现图片的缩放,为了避免最常见的图片缩放问题。如下面的例子: Bitmap

GMF之Shapes实例Part3:为结点Node设置图片或颜色

时光怂恿深爱的人放手 提交于 2019-12-10 17:39:39
1、把要用到的图片放在org.eclipse.myTest.shapes.diagram工程下的icons/custom文件夹下,我用的是ReserveShapeFigure.jpg,然后刷新这个工程。 2、我想要设置图片的元素是ReserveShape1,打开ReserveShape1EditPart.java,它在该工程的org.eclipse.myTest.shapes.diagram.edit.parts包下。 3、为ReserveShape1EditPart类添加静态成员变量,代码如下: /** * @generated NOT */ private static final ImageDescriptor descriptor = ShapesDiagramEditorPlugin .findImageDescriptor("icons/custom/ReserveShapeFigure.jpg"); private static final Image originalImage = descriptor.createImage(); public static final ImageData OrgImageData = originalImage.getImageData(); 4、在ReserveShape1EditPart

GMF之Shapes实例Part5:使用扩展点为指定类型结点添加右击菜单并改变图片

こ雲淡風輕ζ 提交于 2019-12-10 17:39:28
在Part4中我们为节点添加了右击菜单,但是使用这种方式会给所有节点都添加菜单。如果我们只想给某种类型的结点添加菜单,就要使用扩展点方式了。 1、首先新建一个Action:在工程org.eclipse.myTest.shapes.diagram中的Actions包中新建一个类ChangeImageAction,并使它继承AbstractActionDelegate类并实现接口IObjectActionDelegate,在这个Action中首先选择图片,然后再给指定结点改变图片,其完整代码如下: package org.eclipse.myTest.shapes.diagram.edit.actions; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.emf.transaction.RecordingCommand; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.gmf.runtime.common.ui.action.AbstractActionDelegate; import org.eclipse.jface.viewers.IStructuredSelection;

GMF之Shapes实例Part6:给结点添加图片并实现保存

ⅰ亾dé卋堺 提交于 2019-12-10 17:17:44
之前给结点设置图片都不能保存,下次打开后还是原来的图片。接下来就是实现永久保存,其实就是给Shape结点所对应的模型元素添加一个属性ID,这个ID的值在创建模型时确定,并且,我们选择图片后将图片复制到一个确定的文件夹下,图片名就是ID名。 1、给AbstractShape模型添加属性ID:修改工程org.eclipse.myTest.shapes下的models下的shapes.ecore_diagram,这样它所对应的shapes.ecore文件也会改变,为AbstractShape添加属性ID,类型是EString,具体操作参考GMF之Shapes实例Part1。 2、保存shapes.ecore_diagram,删除shapes.genmodel,重新创建一个shapes.genmodel,类似GMF之Shapes实例Part1中,别忘了设置Base Package为org.eclipse.myTest,然后重新生成Model Code、Edit Code和Editor Code,参考GMF之Shapes实例Part1。 3、在工程org.eclipse.myTest.shapes下的org.eclipse.myTest.shapes.util下新建一个类,用于产生一个全局唯一的ID: package org.eclipse.myTest.shapes.util;