加载中…
个人资料
1013598664
1013598664
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,879
  • 关注人气:0
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

Bitmap

(2014-08-22 17:59:02)
标签:

杂谈

int imgid = getResources().getIdentifier("ic_launcher", "drawable", "com.example.anywight");

text.setBackgroundResource(imgid);

Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

InputStream in = this.getAssets().open("ic_launcher");

Drawable da = Drawable.createFromStream(in, null);

Bitmap mm = BitmapFactory.decodeStream(in);

Bitmap bit = BitmapFactory.decodeFile("/sdcard/android.jpg");

public static Bitmap convertViewToBitmap(View view, int bitmapWidth, int bitmapHeight){

Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888);

view.draw(new Canvas(bitmap));

return bitmap;

}

public static Bitmap convertViewToBitMap(View view){

// 打开图像缓存

view.setDrawingCacheEnabled(true);

// 必须调用measure和layout方法才能成功保存可视组件的截图到png图像文件

// 测量View大小

view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

// 发送位置和尺寸到View及其所有的子View

view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());

// 获得可视组件的截图

Bitmap bitmap = view.getDrawingCache();

return bitmap;

}

public static Bitmap getBitmapFromView(View view){

Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(returnedBitmap);

Drawable bgDrawable = view.getBackground();

if (bgDrawable != null)

bgDrawable.draw(canvas);

else

canvas.drawColor(Color.WHITE);

view.draw(canvas);

return returnedBitmap;

}

public Bitmap getScreenPic(View view){

View rootView = view.getRootView();

rootView.setDrawingCacheEnabled(true);

rootView.buildDrawingCache();

// 不明白为什么这里返回一个空,有帖子说不能在oncreat方法中调用

// 测量View大小

rootView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

// 发送位置和尺寸到View及其所有的子View

rootView.layout(0, 0, rootView.getMeasuredWidth(), rootView.getMeasuredHeight());

// 解决措施,调用上面的measure和layout方法之后,返回值就不再为空

// 如果想要创建的是固定长度和宽度的呢?

Bitmap bitmap = rootView.getDrawingCache();

rootView.destroyDrawingCache();

return bitmap;

}

public static Bitmap drawableToBitmap(Drawable drawable){

Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);

Canvas canvas = new Canvas(bitmap);

// canvas.setBitmap(bitmap);

drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());

drawable.draw(canvas);

return bitmap;

}

public static Drawable bitmapToDrawable(Context context,String filename){

Bitmap image = null; 

BitmapDrawable ddd = null; 

try { 

AssetManager am = context.getAssets(); 

InputStream is = am.open(filename); 

image = BitmapFactory.decodeStream(is); 

ddd = new BitmapDrawable(context.getResources(), image); 

is.close(); 

} catch (Exception e) { 

return ddd; 

}

public static Bitmap byteToDrawable(Context context,byte[] bb){

Bitmap pp = BitmapFactory.decodeByteArray(bb, 0, bb.length);

return pp;

}

public static byte[] bitmapToByte(Bitmap bitmap){

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); 

byte[] yy = baos.toByteArray();

return yy;

}

public static Bitmap createTxtImage(String txt, int txtSize) {

Bitmap mbmpTest = Bitmap.createBitmap(txt.length() * txtSize 4,

txtSize 4, Config.ARGB_8888);

Canvas canvasTemp = new Canvas(mbmpTest);

Paint p = new Paint();

p.setAntiAlias(true);

p.setColor(Color.WHITE);

p.setTextSize(txtSize);

canvasTemp.drawText(txt, 2, txtSize - 2, p);

return mbmpTest;

}

public Bitmap bitmapScanel(Context context){

//通过openRawResource获取一个inputStream对象 

InputStream inputStream = context.getResources().openRawResource(R.id.backageground); 

//通过一个InputStream创建一个BitmapDrawable对象 

BitmapDrawable drawable = new BitmapDrawable(inputStream); 

//通过BitmapDrawable对象获得Bitmap对象 

Bitmap bitmap = drawable.getBitmap(); 

//利用Bitmap对象创建缩略图 

bitmap = ThumbnailUtils.extractThumbnail(bitmap, 40, 40); 

return bitmap;

 }

public static Bitmap zoomBitmap(Bitmap bitmap,int w,int h){ 

int width = bitmap.getWidth(); 

int height = bitmap.getHeight(); 

Matrix matrix = new Matrix(); 

float scaleWidht = ((float)w / width); 

float scaleHeight = ((float)h / height); 

matrix.postScale(scaleWidht, scaleHeight); 

Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true); 

return newbmp; 

public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,float roundPx){ 

Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap 

.getHeight(), Config.ARGB_8888); 

Canvas canvas = new Canvas(output); 

final int color = 0xff424242; 

final Paint paint = new Paint(); 

final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 

final RectF rectF = new RectF(rect); 

paint.setAntiAlias(true); 

canvas.drawARGB(0, 0, 0, 0); 

paint.setColor(color); 

canvas.drawRoundRect(rectF, roundPx, roundPx, paint); 

paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 

canvas.drawBitmap(bitmap, rect, rect, paint); 

return output; 

public Bitmap bitmapClip(Context context , int id , int x , int y){

Bitmap map = BitmapFactory.decodeResource(context.getResources(), id);

map = Bitmap.createBitmap(map, x, y, 120, 120);

return map;

}

public static Bitmap createReflectedImage(Bitmap originalImage) {

final int reflectionGap = 4;

int width = originalImage.getWidth();

int height = originalImage.getHeight();

Matrix matrix = new Matrix();

matrix.preScale(1, -1);

// Create a Bitmap with the flip matrix applied to it.

// We only want the bottom half of the image

Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,

height / 2, width, height / 2, matrix, false);

// Create a new bitmap with same width but taller to fit reflection

Bitmap bitmapWithReflection = Bitmap.createBitmap(width,

(height height / 2), Config.ARGB_8888);

// Create a new Canvas with the bitmap that's big enough for

// the image plus gap plus reflection

Canvas canvas = new Canvas(bitmapWithReflection);

// Draw in the original image

canvas.drawBitmap(originalImage, 0, 0, null);

// Draw in the gap

Paint defaultPaint = new Paint();

canvas.drawRect(0, height, width, height reflectionGap, defaultPaint);

// Draw in the reflection

canvas.drawBitmap(reflectionImage, 0, height reflectionGap, null);

// Create a shader that is a linear gradient that covers the reflection

Paint paint = new Paint();

LinearGradient shader = new LinearGradient(0,

originalImage.getHeight(), 0, bitmapWithReflection.getHeight()

reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);

// Set the paint to use this shader (linear gradient)

paint.setShader(shader);

// Set the Transfer mode to be porter duff and destination in

paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));

// Draw a rectangle using the paint with our linear gradient

canvas.drawRect(0, height, width, bitmapWithReflection.getHeight() reflectionGap, paint);

return bitmapWithReflection;

 }

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
前一篇:imageUri
后一篇:bitmap
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    < 前一篇imageUri
    后一篇 >bitmap
      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有