这几天作IM的时候,遇到几个问题,当时怎么也没想通,可能自己还算入门级菜鸟吧,哈哈
不过总算问题得到一个解决了,问题主要是这样的。
我在im发送消息的时候,可以通过相册选择图片,图片里面存在很大的图片就会内存溢出,也可以直接相机拍照呈现图片,这里就存在一个问题,我需要通过TextView进行呈现,网上各种版本,未找到一个比较全面的,在此,本人吸取前人的成果进行一次比较多的总结。
首先
调用相机的方法:
File file //生成一个空文件,用于保存相机的图片
Uri uri = Uri.fromFile(file);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, CAMERA_CODE);
从相册选择的方法:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, IMAGE_CODE);
下面应该就是对结果进行处理
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case IMAGE_CODE:
// 选择图片
Uri selectedImageUri = data.getData();
addPicturesAttachment(selectedImageUri);
break;
case CAMERA_CODE:
if(resultCode == -1){
// 返回拍照后的图片
addPhotoAttachment();
}
break;
}
}
/**
* 获取信息
* @author ljl
* @createtime Dec 5, 2012 6:04:35 PM
* @param userName
* @param file
* @return
*/
//此方法,我觉得不是很好,就是通过文字进行图片替换,这种是我看到表情方法借鉴的,//不知道哪位高手,知道其他方法,望指教
public CharSequence getImage(BitMap bitmap){
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder("[photo]");
spannableStringBuilder.setSpan(new ImageSpan(bitmap), 0, spannableStringBuilder.length(), SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE) ;
return spannableStringBuilder;
}
/**
* 解决图片过大引起内存溢出问题,有了这个过后,还存在一个问题,如果我的分辨 *率 问题,每个手机分辨率不一致,显示出来的效果不一样,如果显示过大就会出现两
*张 图片,解决方法,再对该方法调用一次缩略图方法resizeImage,再次还存在一个问题,我返回出来的是BItmap,我要怎么显示在TextView上了,这里就需要进行处理
* @author ljl
* @createtime Dec 6, 2012 9:03:30 AM
* @param path
* @param fitinWidth
* @param fitinHeight
* @return Bitmap
*/
public static Bitmap createFitinBitmap(String path, int fitinWidth, int fitinHeight)
{
Options opts = new Options();
opts.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path, opts);
int sampleWidth = opts.outWidth / fitinWidth;
int sampleHeight = opts.outHeight / fitinHeight;
opts.inSampleSize = sampleWidth>sampleHeight? sampleWidth : sampleHeight;
opts.inJustDecodeBounds = false;
opts.inDither = false;
opts.inPreferredConfig = Bitmap.Config.RGB_565;
return BitmapFactory.decodeFile(path, opts);
}
/**
* 图片缩放
* @param originalBitmap 原始的Bitmap
* @param newWidth 自定义宽度
* @param newHeight自定义高度
* @return 缩放后的Bitmap
*/
public static Bitmap resizeImage(Bitmap originalBitmap, int newWidth, int newHeight) {
int width = originalBitmap.getWidth();
int height = originalBitmap.getHeight();
// 定义欲转换成的宽、高
// int newWidth = 200;
// int newHeight = 200;
// 计算宽、高缩放率
float scanleWidth = (float) newWidth / width;
float scanleHeight = (float) newHeight / height;
// 创建操作图片用的matrix对象 Matrix
Matrix matrix = new Matrix();
// 缩放图片动作
matrix.postScale(scanleWidth, scanleHeight);
// 旋转图片 动作
// matrix.postRotate(45);
// 创建新的图片Bitmap
Bitmap resizedBitmap = Bitmap.createBitmap(originalBitmap, 0, 0, width, height, matrix, true);
return resizedBitmap;
}
分享到:
相关推荐
在Android系统中,由于设备的多样性,同一张图片在不同分辨率的屏幕上显示时,为了保持清晰度和视觉效果,往往需要有不同的尺寸版本。这涉及到Android的资源适配机制,包括密度独立像素(DP, Density Independent ...
本示例主要介绍如何在Android中有效地显示大分辨率图片,避免出现内存问题。 一、Bitmap对象与内存管理 在Android中,图片通常被表示为Bitmap对象,它占用大量的内存。Bitmap对象的大小取决于图像的宽度、高度、...
Android字体大小自适应不同分辨率的解决办法 今天有人问我,Android系统不同分辨率,不同大小的手机,字体大小怎么去适应呢?其实字体的适应和图片的适应是一个道理的。 一、原理如下: 假设需要适应320×240,480...
在Android开发中,面对各种不同尺寸和分辨率的设备,如何实现多屏幕多分辨率的适配是开发者必须掌握的关键技能。Android系统提供了丰富的机制来帮助我们处理这个问题,使得应用能够在各种屏幕上正常显示,提供良好的...
为了兼容Android手机不同品牌、不同分辨率、不同密度问题,Android需要给图片素材提供不同尺寸规格的图片,通过本程序代码可以方便快捷的自动生成不同分辨率图片用户适配;通过修改程序也可以实现整个文件夹所有图片...
在Android开发中,面对各种不同尺寸和分辨率的设备,如何实现多分辨率适配是一个至关重要的问题。本篇文章将深入探讨Android系统如何处理不同分辨率的显示,并提供有效的适配策略。 一、Android屏幕分类 Android...
过大的图片可能会导致内存占用过高,从而触发Out of Memory (OOM)错误。为了解决这个问题,可以使用Bitmap的配置选项(如ARGB_8888或RGB_565)和解码选项(如`inJustDecodeBounds`和`inSampleSize`)来降低内存占用...
由于Android设备的多样性,开发者必须考虑到不同分辨率下的UI适配问题,以确保应用在所有设备上都能呈现良好的用户体验。这包括但不限于布局调整、图片资源优化以及字体大小的适应性设计。 #### 四、结论 综上所述...
在Android开发中,分辨率问题是一个常见且重要的议题,尤其是在创建具有跨设备兼容性的应用程序时。传智播客的实例深入探讨了如何处理Android系统中的不同屏幕尺寸和像素密度,以确保用户界面在各种设备上都能良好...
过大或过多的图片可能导致内存溢出。可以使用`inSampleSize`参数在解码时降低图片质量,减少内存占用: ```java BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 2; // 降低...
不过,这种方式在低分辨率设备上可能存在色彩不一致的问题,可能与Android的图像缩小机制有关。 实现方式之二是使用9-Patch图像。9-Patch是一种特殊的PNG图片格式,允许指定图片的某些部分可拉伸,以适应不同尺寸的...
RealSR-NCNN-Android 是一款专门为Android系统进行适配的图片超分开源GUI,所有的处理过程均在手机客户端本地实现,无需依赖网络,无需担心隐私问题(前提是你自己的设备不会自动上传你的相册) 低到联发科曦力G99...
1. **使用矢量图形和可缩放资源**:矢量图形可以无损放大缩小,适应不同分辨率,避免了因分辨率变化导致的图片失真。 2. **响应式布局**:采用响应式设计原则,确保界面元素根据屏幕大小自动调整,保持良好的阅读和...
6. **尺寸适配技巧**:使用比例和权重来设计布局,可以避免在不同分辨率下出现元素过大或过小的问题。例如,使用`layout_weight`属性分配空间。 7. **Nine-Patch图像**:这种特殊的PNG图像格式可以自动拉伸,保持...
第三步:开始写布局文件,写的时候如果有要设置大小,则不要直接写成如:android:layout_width:"20dp"的形式,应该写成:android:layout_width:"@dimen/DIG_20PX",注意这里如果是设置背景图片,则大小是图片的大小...
这个"android图片缩放、放大demo"可能是提供了一个实际的项目实例,用于展示如何在Android应用程序中实现图片的动态调整大小。让我们深入探讨一下Android图片缩放放大的关键知识点。 1. **ImageView组件**: ...
在描述中提到的"有图有真像",可能是指附带的图片`Android获取屏幕的物理分辨率.jpg`,这张图片可能展示了代码执行后的结果,即屏幕的物理分辨率以像素形式直观地展示出来,帮助开发者理解代码的工作原理。...
例如,从Android 5.0开始,系统引入了新的图形API,而在Android 6.0中,则加强了权限管理。 - **性能考虑**:高分辨率的照片虽然质量更好,但也会占用更多的存储空间和处理时间。因此,在设计应用程序时应考虑用户的...
- Java是Android的主要开发语言,对于多分辨率适配和设备判断,大部分逻辑都会在Java代码中实现,例如上面提到的检查屏幕尺寸的方法。 - 使用Java的条件语句和逻辑运算符,可以根据设备特性选择合适的布局和资源。...