`

android 图片过大 分辨率问题

 
阅读更多
这几天作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系统中,由于设备的多样性,同一张图片在不同分辨率的屏幕上显示时,为了保持清晰度和视觉效果,往往需要有不同的尺寸版本。这涉及到Android的资源适配机制,包括密度独立像素(DP, Density Independent ...

    Android下展示大分辨率图片示例

    本示例主要介绍如何在Android中有效地显示大分辨率图片,避免出现内存问题。 一、Bitmap对象与内存管理 在Android中,图片通常被表示为Bitmap对象,它占用大量的内存。Bitmap对象的大小取决于图像的宽度、高度、...

    Android字体大小自适应不同分辨率的解决办法

    Android字体大小自适应不同分辨率的解决办法 今天有人问我,Android系统不同分辨率,不同大小的手机,字体大小怎么去适应呢?其实字体的适应和图片的适应是一个道理的。 一、原理如下: 假设需要适应320×240,480...

    android多屏幕多分辨率适配

    在Android开发中,面对各种不同尺寸和分辨率的设备,如何实现多屏幕多分辨率的适配是开发者必须掌握的关键技能。Android系统提供了丰富的机制来帮助我们处理这个问题,使得应用能够在各种屏幕上正常显示,提供良好的...

    自动生成Android 不同分辨率尺寸素材图片素材程序

    为了兼容Android手机不同品牌、不同分辨率、不同密度问题,Android需要给图片素材提供不同尺寸规格的图片,通过本程序代码可以方便快捷的自动生成不同分辨率图片用户适配;通过修改程序也可以实现整个文件夹所有图片...

    Android多分辨率适配

    在Android开发中,面对各种不同尺寸和分辨率的设备,如何实现多分辨率适配是一个至关重要的问题。本篇文章将深入探讨Android系统如何处理不同分辨率的显示,并提供有效的适配策略。 一、Android屏幕分类 Android...

    android拍照或从相册选择照片并裁切关心分辨率

    过大的图片可能会导致内存占用过高,从而触发Out of Memory (OOM)错误。为了解决这个问题,可以使用Bitmap的配置选项(如ARGB_8888或RGB_565)和解码选项(如`inJustDecodeBounds`和`inSampleSize`)来降低内存占用...

    Android分辨率屏含义及大小

    由于Android设备的多样性,开发者必须考虑到不同分辨率下的UI适配问题,以确保应用在所有设备上都能呈现良好的用户体验。这包括但不限于布局调整、图片资源优化以及字体大小的适应性设计。 #### 四、结论 综上所述...

    android中的分辨率问题解决

    在Android开发中,分辨率问题是一个常见且重要的议题,尤其是在创建具有跨设备兼容性的应用程序时。传智播客的实例深入探讨了如何处理Android系统中的不同屏幕尺寸和像素密度,以确保用户界面在各种设备上都能良好...

    android多分辨率适配 ,判断平板还是手机,等比例缩小图片.rar

    过大或过多的图片可能导致内存溢出。可以使用`inSampleSize`参数在解码时降低图片质量,减少内存占用: ```java BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 2; // 降低...

    关于Android引导画面的多分辨率适配.docx

    不过,这种方式在低分辨率设备上可能存在色彩不一致的问题,可能与Android的图像缩小机制有关。 实现方式之二是使用9-Patch图像。9-Patch是一种特殊的PNG图片格式,允许指定图片的某些部分可拉伸,以适应不同尺寸的...

    RealSR-NCNN-Android图片放大,分辨率提高

    RealSR-NCNN-Android 是一款专门为Android系统进行适配的图片超分开源GUI,所有的处理过程均在手机客户端本地实现,无需依赖网络,无需担心隐私问题(前提是你自己的设备不会自动上传你的相册) 低到联发科曦力G99...

    玩转Android多分辨率规格的界面设计

    1. **使用矢量图形和可缩放资源**:矢量图形可以无损放大缩小,适应不同分辨率,避免了因分辨率变化导致的图片失真。 2. **响应式布局**:采用响应式设计原则,确保界面元素根据屏幕大小自动调整,保持良好的阅读和...

    Android游戏开发19 分辨率大全

    6. **尺寸适配技巧**:使用比例和权重来设计布局,可以避免在不同分辨率下出现元素过大或过小的问题。例如,使用`layout_weight`属性分配空间。 7. **Nine-Patch图像**:这种特殊的PNG图像格式可以自动拉伸,保持...

    Android--多分辨率使用dimens转换工具

    第三步:开始写布局文件,写的时候如果有要设置大小,则不要直接写成如:android:layout_width:"20dp"的形式,应该写成:android:layout_width:"@dimen/DIG_20PX",注意这里如果是设置背景图片,则大小是图片的大小...

    android图片缩放放大

    这个"android图片缩放、放大demo"可能是提供了一个实际的项目实例,用于展示如何在Android应用程序中实现图片的动态调整大小。让我们深入探讨一下Android图片缩放放大的关键知识点。 1. **ImageView组件**: ...

    Android实例-获取屏幕的物理分辨率

    在描述中提到的"有图有真像",可能是指附带的图片`Android获取屏幕的物理分辨率.jpg`,这张图片可能展示了代码执行后的结果,即屏幕的物理分辨率以像素形式直观地展示出来,帮助开发者理解代码的工作原理。...

    安卓相机分辨率控制

    例如,从Android 5.0开始,系统引入了新的图形API,而在Android 6.0中,则加强了权限管理。 - **性能考虑**:高分辨率的照片虽然质量更好,但也会占用更多的存储空间和处理时间。因此,在设计应用程序时应考虑用户的...

    android多分辨率适配 ,判断平板还是手机,等比例缩小图片.zip

    - Java是Android的主要开发语言,对于多分辨率适配和设备判断,大部分逻辑都会在Java代码中实现,例如上面提到的检查屏幕尺寸的方法。 - 使用Java的条件语句和逻辑运算符,可以根据设备特性选择合适的布局和资源。...

Global site tag (gtag.js) - Google Analytics