android把内存卡中的图片或者其他的文件转存在其他的路径中

这是一个比较简单的问题,但是也是我们经常回遇到的问题,就是在Android的开发过程中,如何将内存卡的图片或者其他的文件转存,然后对这个文件进行处理,因为我们不能对原文件进行处理,最近正在做图片方面的android项目,所以用到了这方面的知识,就和大家分享一下吧。

private void string2File() {
		tempFiles = new File[resultFileList.size()];
		passFileMap = new HashMap<String, File>();
		for (int i = 0; i < resultFileList.size(); ++i) {
			String name = resultFileList.get(i).substring(
					resultFileList.get(i).lastIndexOf("/") + 1);
			name = getCacheDir(mContext) + "/" + name;
			File file = new File(resultFileList.get(i));
			tempFiles[i] = new File(name);
			Uri uri = Uri.fromFile(tempFiles[i]);
			try {
				Bitmap bitmap = decodeFile(file, 1000);
				if (!tempFiles[i].exists()) {
					tempFiles[i].createNewFile();
				}
				FileOutputStream out = new FileOutputStream(tempFiles[i]);
				bitmap.compress(Bitmap.CompressFormat.JPEG, 60, out);
				out.flush();
				out.close();
				passFileMap.put(tempFiles[i].getAbsolutePath(), tempFiles[i]);
				// tempFiles[i].delete();
			} catch (Exception e) {
				// TODO: handle exception
			}

		}
	}

	private Bitmap decodeFile(File f, int bmpsize) {
		if (f == null || !f.exists())
			return null;

		try {
			BitmapFactory.Options o = new BitmapFactory.Options();
			o.inJustDecodeBounds = true;
			o.inPreferredConfig = Bitmap.Config.ARGB_8888;
			o.inInputShareable = true;
			o.inPurgeable = true;
			BitmapFactory.decodeStream(new FileInputStream(f), null, o);
			final int REQUIRED_SIZE = bmpsize;
			int width_tmp = o.outWidth, height_tmp = o.outHeight;
			int scale = 1;
			if (width_tmp > REQUIRED_SIZE || height_tmp > REQUIRED_SIZE) {
				if (width_tmp > height_tmp) {
					scale = width_tmp / REQUIRED_SIZE;
				} else {
					scale = height_tmp / REQUIRED_SIZE;
				}
			}
			// decode with inSampleSize

			BitmapFactory.Options o2 = new BitmapFactory.Options();

			o2.inSampleSize = scale;
			o2.inPreferredConfig = Bitmap.Config.ARGB_8888;
			o2.inInputShareable = true;
			o2.inPurgeable = true;

			Bitmap bmp = BitmapFactory.decodeStream(new FileInputStream(f),
					null, o2);
			return bmp;
		} catch (FileNotFoundException e) {

		}

		return null;

	}

我们是先取出原文件,对他进行特定的处理,例如图片的话,可以进行压缩什么的,然后将处理之后的图片存放到新的文件中,这样就不会对原文件造成影响。

这种情况在处理本地图片的压缩中非常常见,希望能够给大家一点启示吧。

时间: 2024-11-11 17:05:16

android把内存卡中的图片或者其他的文件转存在其他的路径中的相关文章

【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】

iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转化为PDF文件. iText的安装非常方便,下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了. 1.包的引用 1 import java.io.FileNotFoundException; 2 import java.i

android中打包含有Activity以及资源文件的jar包在工程中调用

研究如何将资源以及activity文件大包成jar文件供项目调用,走了不少弯路,也尝试了各种不同方式,都不太理想,最终还是从android的官方文档中找到了完美的解决,这里做一个总结. 最近刚刚发布了一款小应用<诗词大全>,有兴趣的朋友请实用提出您的宝贵意见,谢谢 这篇博文内容是结合android 开发文档的翻译以及个人在开发过程中的具体情况的一个总结 第一步,把普通的android project设置成库项目 库项目也是一个标准的android项目,因此你先创建一个普通的android项目.

.Net语言 APP开发平台——Smobiler学习日志:快速实现应用中的图片、声音等文件上传功能

最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 样式一 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的"Smobiler Components"拖动一个ResourceUploader控件和一个ImageButton控件到窗体界面上 2.ImageButton的Click事件 VB: Private Sub imageButton1_Click(sender As Object, e As Ev

[转] 从数据库中读取图片并导入Excel文件,C#方式

原文地址, 作者 Lvyou1980 直接源码吧. using System; using System.IO; using System.Data; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms; using Excel; private void EduceExcel() { string picPath=Directory.GetCurrentDirectory()+'\\Exc

C# 获取某路径文件夹中全部图片或其它指定格式的文件名(全路径)

1.编写获取文件名(全路径)子函数 /////param///path:文件夹路径///suffix:后缀格式, 如bmp,txt///fileList:文件名存放///isSubcatalog:true遍历子文件夹,否则不遍历void getFiles(string path, string suffix, ref List<string> fileList, bool isSubcatalog) { string filename; DirectoryInfo dir = new Dire

Android 自己写一个打开图片的Activity

根据记忆中eoe的Intent相关视频,模仿,写一个打开图片的Activity 1.在主Activity的button时间中,通过设置action.category.data打开一个图片.这时代码已经可以运行,将使用系统默认的工具打开图片. Intent intentImage = new Intent(Intent.ACTION_VIEW); intentImage.addCategory(Intent.CATEGORY_DEFAULT); File file = new File("/sto

点读笔写字App(1)——从Drawable中获取图片画图

[如果你想了解这个点读笔写字App的背景,请移步这里 http://www.jianshu.com/p/ee2a1bb99280 ] 直到这篇文章的时候,我并不知道在android App运行的过程中需要使用到的图片文件应该放到何处比较合适,一点可以肯定的是不能在app安装时直接写到安装路径包的文件夹下面,因为这样会发生误删,从而引起app运行时获取不到图片的错误.如果不应该这么做,麻烦告诉我应该放到哪吧. 正如题目所说的,我把他放到了Drawable中,运行中就可以方便的取得图片了,不过放到d

在 Excel 中设置图片

package com.smbea.demo.excel; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStrea

使用Gridview绑定数据库中的图片

使用Gridview绑定数据库中的图片 注:此系列记录在我实际开发中遇到的问题和收藏一些技巧文章. 我们都知道,在Gridview中不能直接去绑定数据库中的图片,我们可以利用HttpHandler很容易的完成这个任务,在这里我记录一下这个过程. 1.上传图片存储到数据库中 在数据库中创建一个表,添加一下3个字段: 步骤一:在Web页面中拖一个FileUpload 控件,一个文本框用于输入名称和提交上传按钮 <asp:FileUpload ID="fuImage" runat=&q