android-Android 方形图片编程圆形之后,太小了

问题描述

Android 方形图片编程圆形之后,太小了

从本地相册获取的一个图片,进行正方形裁剪后,在用遮罩方式变成圆形,怎么样调整生成圆形之后的圆形图片的大小。

下面是主要代码

/**
* 裁剪图片方法实现
*
* @param uri
/
public void startPhotoZoom(Uri uri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/
");
// 设置裁剪
intent.putExtra("crop", "true");
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
// outputX outputY 是裁剪图片宽高
intent.putExtra("outputX", layoutPhoto.getWidth());
intent.putExtra("outputY", layoutPhoto.getHeight());
intent.putExtra("return-data", true);
startActivityForResult(intent, RESULT_REQUEST_CODE);
}

/**
 * 保存裁剪之后的图片数据
 *
 * @param picdata
 */
private void getImageToView(Intent data) {
    Bundle extras = data.getExtras();
    if (extras != null) {
        Bitmap photo = extras.getParcelable("data");
        Bitmap bitPhoto = createCirclImage(photo);
        Drawable drawable = new BitmapDrawable(this.getResources(), bitPhoto);
        iv_nikePhoto.setImageDrawable(drawable);

    }
}

/**
 * 绘制圆形图片
 *
 * @return
 */
private Bitmap createCirclImage(Bitmap bitmap) {
    // // 绘制画笔
    int width = layoutPhoto.getWidth();
    int height = layoutPhoto.getHeight();
    // 绘制圆角矩形
    Bitmap roundBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
    Canvas canvas = new Canvas(roundBitmap);
    int color = 0xff424242;
    Paint paint = new Paint();
    // 设置圆形半径
    int radius;
    if (bitmap.getWidth() > bitmap.getHeight()) {
        radius = bitmap.getHeight() / 2;
    } else {
        radius = bitmap.getWidth() / 2;
    }
    // 绘制圆形
    paint.setAntiAlias(true);
    canvas.drawARGB(0, 0, 0, 0);
    paint.setColor(color);
    canvas.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2, radius, paint);
    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
    canvas.drawBitmap(bitmap, 0, 0, paint);
    return roundBitmap;

}

解决方案

public static Bitmap cut2Circular(Bitmap source, boolean recycleSource) {

    int photoWidth = layoutPhoto.getWidth() - DisplayUtil.dip2px(mActivity, 10);
    int photoHeight = layoutPhoto.getHeight() - DisplayUtil.dip2px(mActivity, 10);
    int width = source.getWidth();
    int height = source.getHeight();
    float scaleWidth = (float) photoWidth / (float) width;
    float scaleHeight = (float) photoHeight / (float) height;
    Matrix mx = new Matrix();
    mx.postScale(scaleWidth, scaleHeight);
    source = Bitmap.createBitmap(source, 0, 0, width, height, mx, true);
    int diameter = Math.min(photoWidth, photoHeight);
    Paint paint = new Paint();
    paint.setAntiAlias(true);
    Bitmap result = Bitmap.createBitmap(diameter, diameter, Bitmap.Config.ARGB_8888);
    if (result != null) {
        Canvas canvas = new Canvas(result);
        // canvas.drawCircle(diameter / 2, diameter / 2, diameter / 2,
        // paint);
        canvas.drawCircle(diameter / 2, diameter / 2, diameter / 2, paint);
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        // canvas.drawBitmap(source, (diameter - photoWidth) / 2, (diameter
        // - photoHeight) / 2, paint);
        canvas.drawBitmap(source, (diameter - photoWidth) / 2, (diameter - photoHeight) / 2, paint);
        if (recycleSource) {
            source.recycle();
            source = null;
        }
    } else {
        result = source;
    }
    return result;

解决方案二:

首先要让圆形的直径等于正方形的边长

解决方案三:

可以看看你的效果图 和 设计图不

解决方案四:

![

设计图如下

图片说明](http://img.ask.csdn.net/upload/201603/17/1458177855_662617.png)

解决方案五:

这是效果图

解决方案六:

你可以去看看 CircleImageView 开源的 那个写的很完善,包括相片的选取

解决方案七:

看能不能给存放图片的地方的布局块设置一下参数为内容自适应。
//1设置参数
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);

//2给图片设置参数
imageview.setLayoutParams(params);
时间: 2024-08-21 13:39:45

android-Android 方形图片编程圆形之后,太小了的相关文章

Android之头像图片变圆形显示

一:先上效果图 二:实现步骤 1.自定义一个转换工具类 package com.common.base.util; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.grap

Android使用BitmapShader图形渲染实现圆形、圆角和椭圆自定义图片View

一.概述 Android实现圆角矩形,圆形或者椭圆等图形,一般主要是个自定义View加上使用Xfermode实现的.实现圆角图片的方法其实不少,常见的就是利用Xfermode,Shader.本文直接继承ImageView,使用BitmapShader方法来实现圆形.圆角和椭圆的绘制,等大家看我本文的方法后,其他的类似形状也就都能举一反三来来画出来了. 二.效果图: 三.BitmapShader简介 BitmapShader是Shader的子类,可以通过Paint.setShader(Shader

解决通过Intent调用系统拍照程序,返回图片太小的问题[android]

  以下的代码可以调用系统的拍照程序, 1 2 Intent it = newIntent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(it, Activity.DEFAULT_KEYS_DIALER); 按下拍照键后,会返回到你的activity,所以你的activity要在onActivityResult方法里加一个处理, 1 2 3 4 5 6 7 8 9 10 11 12 13 protectedv

android 获取本地图片 并用遮罩显示成带有圆心边框的圆形图

问题描述 android 获取本地图片 并用遮罩显示成带有圆心边框的圆形图 有一个需求,获取本地图片或者拍照,然后将图片用遮罩效果做成圆形并且带有边框的样式如图所示,,获取本地图片和拍照会做,但是不知道怎么用遮罩效果做成那种效果,,,求解,,,谢谢....最好有具体代码实现 解决方案 用遮罩的方式已经解决,,,,,,,, 解决方案二: Picasso框架简单快速高效 解决方案三: 你最好了解一下最新的fresco框架,你说的需求,里面都可以实现,只要你引用就可以了! 解决方案四: android

android图片处理之让图片变成圆形_Android

这几天做项目,有些地方的图片需要用到圆形图片,所以百度了一下,在github上找到一个开源项目,处理很简单,效果如下:   使用起来特别简单,一共三步,具体如下:  1.创建一个Java类CircleImageView把下面的代码复制过去,报错的导包 package de.hdodenhof.circleimageview; import edu.njupt.zhb.main.R; import android.content.Context; import android.content.re

Android裁剪图片为圆形图片的实现原理与代码_Android

以前在eoe论坛中找过裁剪图片为圆形图片的方法,但是效果都不是很理想,这几天因为公司业务的要求,需要对头像进行裁剪以圆形的方式显示,这个方法是根据传入的图片的高度(height)和宽度(width)决定的,如果是 width <= height时,则会裁剪高度,裁剪的区域是宽度不变高度从顶部到宽度width的长度:如果 width > height,则会裁剪宽度,裁剪的区域是高度不变,宽度是取的图片宽度的中心区域,不过不同的业务需求,对裁剪图片要求不一样,可以根据业务的需求来调整裁剪的区域.

Android裁剪图片为圆形图片的实现原理与代码

以前在eoe论坛中找过裁剪图片为圆形图片的方法,但是效果都不是很理想,这几天因为公司业务的要求,需要对头像进行裁剪以圆形的方式显示,这个方法是根据传入的图片的高度(height)和宽度(width)决定的,如果是 width <= height时,则会裁剪高度,裁剪的区域是宽度不变高度从顶部到宽度width的长度:如果 width > height,则会裁剪宽度,裁剪的区域是高度不变,宽度是取的图片宽度的中心区域,不过不同的业务需求,对裁剪图片要求不一样,可以根据业务的需求来调整裁剪的区域.

我的Android进阶之旅------&amp;gt;Android使用9Patch图片作为不失真背景

做人要大度,海纳百川,做事要圆滑,左右逢源,这让我想到了编程也是如此,代码要扩展,界面也要考虑自适应. 这篇文章是android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用. 1.背景自适应且不失真问题的存在       制作自适应背景图片是UI开发的一个广泛问题,也是界面设计师渴望解决的问题,我相信我们彼此都深有体会.       比如,列表的背景图一定,但是列表的高度随着列表数据项会发生变化:标题栏的背景,无论横屏还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失

Android实现圆角矩形和圆形ImageView的方式_Android

Android中实现圆角矩形和圆形有很多种方式,其中最常见的方法有ImageLoader设置Option和自定义View. 1.ImageLoader加载图片 public static DisplayImageOptions getRoundOptions() { DisplayImageOptions options = new DisplayImageOptions.Builder() // 是否设置为圆角,弧度为多少,当弧度为90时显示的是一个圆 .displayer(new Round