- /** 获取 drawable 的图片 可以循环 1.图名 2.drawable 3.包名 **/
- int imgid = getResources().getIdentifier("ic_launcher", "drawable", "com.example.anywight");
- text.setBackgroundResource(imgid);
- /** 通过图片id获得Bitmap **/
- Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
- /** 通过 assest 获取 获得Drawable bitmap **/
- InputStream in = this.getAssets().open("ic_launcher");
- Drawable da = Drawable.createFromStream(in, null);
- Bitmap mm = BitmapFactory.decodeStream(in);
- /** 通过 sdcard 获得 bitmap **/
- Bitmap bit = BitmapFactory.decodeFile("/sdcard/android.jpg");
- /** view转Bitmap **/
- 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;
- }
- /** 将控件转换为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;
- }
- /** 获取屏幕截图的bitmap对象的代码如下 **/
- 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;
- }
- /** Drawable → 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;
- }
- /** bitmap → drawable **/
- 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;
- }
- /** byte[] → Bitmap **/
- public static Bitmap byteToDrawable(Context context, byte[] bb) {
- Bitmap pp = BitmapFactory.decodeByteArray(bb, 0, bb.length);
- return pp;
- }
- /** Bitmap → byte[] **/
- public static byte[] bitmapToByte(Bitmap bitmap) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
- byte[] yy = baos.toByteArray();
- return yy;
- }
- /** 将text 转换成 bitmap **/
- 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;
- }
- /** 显示将bitmap进行缩放 **/
- 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;
- }
- /** 对 bitmap 进行裁剪 **/
- 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;
- }
来源: http://www.phpxs.com/code/1001871/