标签:android   des   blog   http   java   color   
-     public static Bitmap compressImage(Bitmap image) {  
-   
-         ByteArrayOutputStream baos = new ByteArrayOutputStream();  
-         image.compress(Bitmap.CompressFormat.JPEG, 100, baos);
-         int options = 100;  
-         while ( baos.toByteArray().length / 1024>100) {  
-             baos.reset();
-             image.compress(Bitmap.CompressFormat.JPEG, options, baos);
-             options -= 10;
-         }  
-         ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());
-         Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);
-         return bitmap;  
-     }  
 
 
-     public Bitmap convertGreyImg(Bitmap img) {    
-         int width = img.getWidth();         
-         int height = img.getHeight();       
-             
-         int []pixels = new int[width * height]; 
-             
-         img.getPixels(pixels, 0, width, 0, 0, width, height);    
-         int alpha = 0xFF << 24;     
-         for(int i = 0; i < height; i++)  {    
-             for(int j = 0; j < width; j++) {    
-                 int grey = pixels[width * i + j];    
-                     
-                 int red = ((grey  & 0x00FF0000 ) >> 16);    
-                 int green = ((grey & 0x0000FF00) >> 8);    
-                 int blue = (grey & 0x000000FF);    
-                     
-                 grey = (int)((float) red * 0.3 + (float)green * 0.59 + (float)blue * 0.11);    
-                 grey = alpha | (grey << 16) | (grey << 8) | grey;    
-                 pixels[width * i + j] = grey;    
-             }    
-         }    
-         Bitmap result = Bitmap.createBitmap(width, height, Config.RGB_565);    
-         result.setPixels(pixels, 0, width, 0, 0, width, height);    
-         return result;    
-     }    
 
 
 
将一个图片切割成多个图片 
有种场景,我们想将一个图片切割成多个图片。比如我们在开发一个拼图的游戏,就首先要对图片进行切割。 
以下是封装好的两个类,可以实现图片的切割。仅供参考和学习。 
一个是ImagePiece类,此类保存了一个Bitmap对象和一个标识图片的顺序索引的int变量。 
- import android.graphics.Bitmap;   
- public class ImagePiece {     
-     public int index = 0;          
-     public Bitmap bitmap = null;    
- }  
 
一个是ImageSplitter类,有一个静态方法split,传入的参数是要切割的Bitmap对象,和横向和竖向的切割片数。比如传入的是3、3,则横竖向都切割成3片,最终会将整个图片切割成3X3=9片。 
- import java.util.ArrayList;    
- import java.util.List;    
-     
- import android.graphics.Bitmap;    
-     
- public class ImageSplitter {    
-     
-     public static List<ImagePiece> split(Bitmap bitmap, int xPiece, int yPiece) {    
-     
-         List<ImagePiece> pieces = new ArrayList<ImagePiece>(xPiece * yPiece);    
-         int width = bitmap.getWidth();    
-         int height = bitmap.getHeight();    
-         int pieceWidth = width / 3;    
-         int pieceHeight = height / 3;    
-         for (int i = 0; i < yPiece; i++) {    
-             for (int j = 0; j < xPiece; j++) {    
-                 ImagePiece piece = new ImagePiece();    
-                 piece.index = j + i * xPiece;    
-                 int xValue = j * pieceWidth;    
-                 int yValue = i * pieceHeight;    
-                 piece.bitmap = Bitmap.createBitmap(bitmap, xValue, yValue,    
-                         pieceWidth, pieceHeight);    
-                 pieces.add(piece);    
-             }    
-         }    
-     
-         return pieces;    
-     }    
-     
- }  
 
1、图标加灰色过滤; 
2、android的图片资源默认是静态的,单实例;如果两个IM好友的头像一样,最简单的都是用的软件自带头像,有一个在线,一个离线,直接改变头像的灰度,则两个用户的头像都会变灰或者在线,答案是:Drawable.mutate()。 
- Drawable mDrawable = context.getResources().getDrawable(R.drawable.face_icon);    
- mDrawable.mutate();    
- ColorMatrix cm = new ColorMatrix();    
- cm.setSaturation(0);    
- ColorMatrixColorFilter cf = new ColorMatrixColorFilter(cm);    
- mDrawable.setColorFilter(cf);  
 
生成缩略图,抠自android launcher源码: 
-   
- package com.android.launcher;  
-   
- import android.graphics.drawable.BitmapDrawable;  
- import android.graphics.drawable.Drawable;  
- import android.graphics.drawable.PaintDrawable;  
- import android.graphics.Bitmap;  
- import android.graphics.PixelFormat;  
- import android.graphics.Canvas;  
- import android.graphics.PaintFlagsDrawFilter;  
- import android.graphics.Paint;  
- import android.graphics.Rect;  
- import android.content.res.Resources;  
- import android.content.Context;  
-   
- final class Utilities {  
-     private static int sIconWidth = -1;  
-     private static int sIconHeight = -1;  
-   
-     private static final Paint sPaint = new Paint();  
-     private static final Rect sBounds = new Rect();  
-     private static final Rect sOldBounds = new Rect();  
-     private static Canvas sCanvas = new Canvas();  
-   
-     static {  
-         sCanvas.setDrawFilter(new PaintFlagsDrawFilter(Paint.DITHER_FLAG,  
-                 Paint.FILTER_BITMAP_FLAG));  
-     }  
-   
-     
-     static Drawable createIconThumbnail(Drawable icon, Context context) {  
-         if (sIconWidth == -1) {  
-             final Resources resources = context.getResources();  
-             sIconWidth = sIconHeight = (int) resources.getDimension(android.R.dimen.app_icon_size);  
-         }  
-   
-         int width = sIconWidth;  
-         int height = sIconHeight;  
-   
-         float scale = 1.0f;  
-         if (icon instanceof PaintDrawable) {  
-             PaintDrawable painter = (PaintDrawable) icon;  
-             painter.setIntrinsicWidth(width);  
-             painter.setIntrinsicHeight(height);  
-         } else if (icon instanceof BitmapDrawable) {  
-             
-             BitmapDrawable bitmapDrawable = (BitmapDrawable) icon;  
-             Bitmap bitmap = bitmapDrawable.getBitmap();  
-             if (bitmap.getDensity() == Bitmap.DENSITY_NONE) {  
-                 bitmapDrawable.setTargetDensity(context.getResources().getDisplayMetrics());  
-             }  
-         }  
-         int iconWidth = icon.getIntrinsicWidth();  
-         int iconHeight = icon.getIntrinsicHeight();  
-   
-         if (width > 0 && height > 0) {  
-             if (width < iconWidth || height < iconHeight || scale != 1.0f) {  
-                 final float ratio = (float) iconWidth / iconHeight;  
-   
-                 if (iconWidth > iconHeight) {  
-                     height = (int) (width / ratio);  
-                 } else if (iconHeight > iconWidth) {  
-                     width = (int) (height * ratio);  
-                 }  
-   
-                 final Bitmap.Config c = icon.getOpacity() != PixelFormat.OPAQUE ?  
-                             Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565;  
-                 final Bitmap thumb = Bitmap.createBitmap(sIconWidth, sIconHeight, c);  
-                 final Canvas canvas = sCanvas;  
-                 canvas.setBitmap(thumb);  
-                 
-                 
-                 
-                 
-                 
-                 sOldBounds.set(icon.getBounds());  
-                 final int x = (sIconWidth - width) / 2;  
-                 final int y = (sIconHeight - height) / 2;  
-                 icon.setBounds(x, y, x + width, y + height);  
-                 icon.draw(canvas);  
-                 icon.setBounds(sOldBounds);  
-                 icon = new FastBitmapDrawable(thumb);  
-             } else if (iconWidth < width && iconHeight < height) {  
-                 final Bitmap.Config c = Bitmap.Config.ARGB_8888;  
-                 final Bitmap thumb = Bitmap.createBitmap(sIconWidth, sIconHeight, c);  
-                 final Canvas canvas = sCanvas;  
-                 canvas.setBitmap(thumb);  
-                 sOldBounds.set(icon.getBounds());  
-                 final int x = (width - iconWidth) / 2;  
-                 final int y = (height - iconHeight) / 2;  
-                 icon.setBounds(x, y, x + iconWidth, y + iconHeight);  
-                 icon.draw(canvas);  
-                 icon.setBounds(sOldBounds);  
-                 icon = new FastBitmapDrawable(thumb);  
-             }  
-         }  
-   
-         return icon;  
-     }  
-   
-     
-     static Bitmap createBitmapThumbnail(Bitmap bitmap, Context context) {  
-         if (sIconWidth == -1) {  
-             final Resources resources = context.getResources();  
-             sIconWidth = sIconHeight = (int) resources.getDimension(  
-                     android.R.dimen.app_icon_size);  
-         }  
-   
-         int width = sIconWidth;  
-         int height = sIconHeight;  
-   
-         final int bitmapWidth = bitmap.getWidth();  
-         final int bitmapHeight = bitmap.getHeight();  
-   
-         if (width > 0 && height > 0) {  
-             if (width < bitmapWidth || height < bitmapHeight) {  
-                 final float ratio = (float) bitmapWidth / bitmapHeight;  
-       
-                 if (bitmapWidth > bitmapHeight) {  
-                     height = (int) (width / ratio);  
-                 } else if (bitmapHeight > bitmapWidth) {  
-                     width = (int) (height * ratio);  
-                 }  
-       
-                 final Bitmap.Config c = (width == sIconWidth && height == sIconHeight) ?  
-                         bitmap.getConfig() : Bitmap.Config.ARGB_8888;  
-                 final Bitmap thumb = Bitmap.createBitmap(sIconWidth, sIconHeight, c);  
-                 final Canvas canvas = sCanvas;  
-                 final Paint paint = sPaint;  
-                 canvas.setBitmap(thumb);  
-                 paint.setDither(false);  
-                 paint.setFilterBitmap(true);  
-                 sBounds.set((sIconWidth - width) / 2, (sIconHeight - height) / 2, width, height);  
-                 sOldBounds.set(0, 0, bitmapWidth, bitmapHeight);  
-                 canvas.drawBitmap(bitmap, sOldBounds, sBounds, paint);  
-                 return thumb;  
-             } else if (bitmapWidth < width || bitmapHeight < height) {  
-                 final Bitmap.Config c = Bitmap.Config.ARGB_8888;  
-                 final Bitmap thumb = Bitmap.createBitmap(sIconWidth, sIconHeight, c);  
-                 final Canvas canvas = sCanvas;  
-                 final Paint paint = sPaint;  
-                 canvas.setBitmap(thumb);  
-                 paint.setDither(false);  
-                 paint.setFilterBitmap(true);  
-                 canvas.drawBitmap(bitmap, (sIconWidth - bitmapWidth) / 2,  
-                         (sIconHeight - bitmapHeight) / 2, paint);  
-                 return thumb;  
-             }  
-         }  
-   
-         return bitmap;  
-     }  
- }  
 
- public void drawRegion(Image image_src,  
-   
- int x_src, int y_src,  
-   
- int width, int height,  
-   
- int transform,  
-   
- int x_dest, int y_dest,  
-   
- int anchor){  
-   
- if((anchor&VCENTER) != 0){  
-   
- y_dest -= height/2;  
-   
- }else if((anchor&BOTTOM) != 0){  
-   
- y_dest -= height;  
-   
- }  
-   
- if((anchor&RIGHT) != 0){  
-   
- x_dest -= width;  
-   
- }else if((anchor&HCENTER) != 0){  
-   
- x_dest -= width/2;  
-   
- }  
-   
- Bitmap newMap = Bitmap.createBitmap(image_src.getBitmap(), x_src, y_src, width, height);  
-   
- Matrix mMatrix = new Matrix();  
-   
- Matrix temp = new Matrix();  
-   
- Matrix temp2 = new Matrix();  
-   
- float[] mirrorY = {  
-   
- -1, 0, 0,  
- 0, 1, 0,  
- 0, 0, 1  
-   
- };  
-   
- temp.setValues(mirrorY);  
-   
- switch(transform){  
-   
- case Sprite.TRANS_NONE:  
-   
- break;  
-   
- case Sprite.TRANS_ROT90:  
-   
- mMatrix.setRotate(90,width/2, height/2);  
-   
- break;  
-   
- case Sprite.TRANS_ROT180:  
-   
- mMatrix.setRotate(180,width/2, height/2);  
-   
- break;  
-   
- case Sprite.TRANS_ROT270:  
-   
- mMatrix.setRotate(270,width/2, height/2);  
-   
- break;  
-   
- case Sprite.TRANS_MIRROR:  
-   
- mMatrix.postConcat(temp);  
-   
- break;  
-   
- case Sprite.TRANS_MIRROR_ROT90:  
-   
- mMatrix.postConcat(temp);  
-   
- mMatrix.setRotate(90,width/2, height/2);  
-   
- break;  
-   
- case Sprite.TRANS_MIRROR_ROT180:  
-   
- mMatrix.postConcat(temp);  
-   
- mMatrix.setRotate(180,width/2, height/2);  
-   
- break;  
-   
- case Sprite.TRANS_MIRROR_ROT270:  
-   
- mMatrix.postConcat(temp);  
-   
- mMatrix.setRotate(270,width/2, height/2);  
-   
- break;  
-   
- }  
-   
- mMatrix.setTranslate(x_dest, y_dest);  
-   
- canvas.drawBitmap(newMap, mMatrix, mPaint);  
-   
- }  
 
- public Bitmap returnBitMap(String url) {  
-         URL myFileUrl = null;  
-         Bitmap bitmap = null;  
-         try {  
-             myFileUrl = new URL(url);  
-         } catch (MalformedURLException e) {  
-             e.printStackTrace();  
-         }  
-         try {  
-             HttpURLConnection conn = (HttpURLConnection) myFileUrl  
-                     .openConnection();  
-             conn.setDoInput(true);  
-             conn.connect();  
-             InputStream is = conn.getInputStream();  
-             bitmap = BitmapFactory.decodeStream(is);  
-             is.close();  
-         } catch (IOException e) {  
-             e.printStackTrace();  
-         }  
-         Log.v(tag, bitmap.toString());  
-   
-         return bitmap;  
-     }  
- public static Drawable resizeImage(Bitmap bitmap, int w, int h) {  
-   
-         
-         Bitmap BitmapOrg = bitmap;  
-   
-         int width = BitmapOrg.getWidth();  
-         int height = BitmapOrg.getHeight();  
-         int newWidth = w;  
-         int newHeight = h;  
-   
-         Log.v(tag, String.valueOf(width));  
-         Log.v(tag, String.valueOf(height));  
-   
-         Log.v(tag, String.valueOf(newWidth));  
-         Log.v(tag, String.valueOf(newHeight));  
-   
-         
-         float scaleWidth = ((float) newWidth) / width;  
-         float scaleHeight = ((float) newHeight) / height;  
-   
-         
-         Matrix matrix = new Matrix();  
-         
-         matrix.postScale(scaleWidth, scaleHeight);  
-         
-         
-   
-         
-         Bitmap resizedBitmap = Bitmap.createBitmap(BitmapOrg, 0, 0, width,  
-                 height, matrix, true);  
-   
-         
-         
-         return new BitmapDrawable(resizedBitmap);  
-   
-     }  
 
- 1.图片加载方法,方便用户加载图片  
- public final Bitmap CreatImage(Context context, int bitAdress) {  
- Bitmap bitmaptemp = null;  
- bitmaptemp = BitmapFactory.decodeResource(context.getResources(),  
- bitAdress);  
- return bitmaptemp;  
- }  
- 2.图片平均分割方法,将大图平均分割为N行N列,方便用户使用  
- public final void cuteImage(Canvas g, Paint paint, Bitmap imgBit, int x,  
- int y, int w, int h, int line, int row) {  
- g.clipRect(x, y, x + w, h + y);  
- g.drawBitmap(imgBit, x – line * w, y – row * h, paint);  
- g.restore();  
- }  
- 3.图片缩放,对当前图片进行缩放处理  
- public Bitmap zoomImage(Bitmap bgimage, int newWidth, int newHeight) {  
- int width = bgimage.getWidth();  
- int height = bgimage.getHeight();  
- Matrix matrix = new Matrix();  
- float scaleWidth = ((float) newWidth) / width;  
- float scaleHeight = ((float) newHeight) / height;  
- matrix.postScale(scaleWidth, scaleHeight);  
- Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, width, height,  
- matrix, true);  
- return bitmap;  
- }  
- 4.绘制带有边框的文字,一般在游戏中起文字的美化作用  
- public void drawText(String strMsg, Canvas g, Paint paint, int setx,  
- int sety, int fg, int bg) {  
- paint.setColor(bg);  
- g.drawText(strMsg, setx + 1, sety, paint);  
- g.drawText(strMsg, setx, sety – 1, paint);  
- g.drawText(strMsg, setx, sety + 1, paint);  
- g.drawText(strMsg, setx – 1, sety, paint);  
- paint.setColor(fg);  
- g.drawText(strMsg, setx, sety, paint);  
- g.restore();  
- }  
- 5.Android 图片透明度处理代码  
- public static Bitmap setAlpha(Bitmap sourceImg, int number) {  
- int[] argb = new int[sourceImg.getWidth() * sourceImg.getHeight()];  
- sourceImg.getPixels(argb, 0, sourceImg.getWidth(), 0, 0,sourceImg.getWidth(), sourceImg.getHeight());
- number = number * 255 / 100;  
- for (int i = 0; i < argb.length; i++) {  
- argb = (number << 24) | (argb & 0×00FFFFFF);
- }  
- sourceImg = Bitmap.createBitmap(argb, sourceImg.getWidth(), sourceImg.getHeight(), Config.ARGB_8888);  
- return sourceImg;  
- }  
- 6.图片翻转  
- Resources res = this.getContext().getResources();  
- img = BitmapFactory.decodeResource(res, R.drawable.slogo);  
- Matrix matrix = new Matrix();  
- matrix.postRotate(90);        
- int width = img.getWidth();  
- int height = img.getHeight();  
- r_img = Bitmap.createBitmap(img, 0, 0, width, height, matrix, true);  
 
 
- import android.graphics.Bitmap;  
- import android.graphics.Canvas;  
- import android.graphics.LinearGradient;  
- import android.graphics.Matrix;  
- import android.graphics.Paint;  
- import android.graphics.PixelFormat;  
- import android.graphics.PorterDuffXfermode;  
- import android.graphics.Rect;  
- import android.graphics.RectF;  
- import android.graphics.Bitmap.Config;  
- import android.graphics.PorterDuff.Mode;  
- import android.graphics.Shader.TileMode;  
- import android.graphics.drawable.Drawable;  
- public class ImageUtil {  
-   
- 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 drawableToBitmap(Drawable drawable) {  
-    int width = drawable.getIntrinsicWidth();  
-    int height = drawable.getIntrinsicHeight();  
-    Bitmap bitmap = Bitmap.createBitmap(width, height, drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);  
-    Canvas canvas = new Canvas(bitmap);  
-    drawable.setBounds(0, 0, width, height);  
-    drawable.draw(canvas);  
-    return bitmap;  
-   
- }  
-   
- 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 static Bitmap createReflectionImageWithOrigin(Bitmap bitmap) {  
-    final int reflectionGap = 4;  
-    int width = bitmap.getWidth();  
-    int height = bitmap.getHeight();  
-   
-    Matrix matrix = new Matrix();  
-    matrix.preScale(1, -1);  
-   
-    Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, height / 2, width, height / 2, matrix, false);  
-   
-    Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (height + height / 2), Config.ARGB_8888);  
-   
-    Canvas canvas = new Canvas(bitmapWithReflection);  
-    canvas.drawBitmap(bitmap, 0, 0, null);  
-    Paint deafalutPaint = new Paint();  
-    canvas.drawRect(0, height, width, height + reflectionGap, deafalutPaint);  
-   
-    canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);  
-   
-    Paint paint = new Paint();  
-    LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0, bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);  
-    paint.setShader(shader);  
-    
-    paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));  
-    
-    canvas.drawRect(0, height, width, bitmapWithReflection.getHeight() + reflectionGap, paint);  
-    return bitmapWithReflection;  
- }  
- }  
 
 
- private byte[] Bitmap2Bytes(Bitmap bm){  
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();  
-    bm.compress(Bitmap.CompressFormat.PNG, 100, baos);  
-    return baos.toByteArray();  
- }  
- private Bitmap Bytes2Bimap(byte[] b){  
-             if(b.length!=0){  
-                 return BitmapFactory.decodeByteArray(b, 0, b.length);  
-             }  
-             else {  
-                 return null;  
-             }  
-       }  
-   
-  
-     private Bitmap createBitmap( Bitmap src, Bitmap watermark )  
-     {  
-         String tag = "createBitmap";  
-         Log.d( tag, "create a new bitmap" );  
-         if( src == null )  
-         {  
-             return null;  
-         }  
-    
-         int w = src.getWidth();  
-         int h = src.getHeight();  
-         int ww = watermark.getWidth();  
-         int wh = watermark.getHeight();  
-         
-         Bitmap newb = Bitmap.createBitmap( w, h, Config.ARGB_8888 );
-         Canvas cv = new Canvas( newb );  
-         
-         cv.drawBitmap( src, 0, 0, null );
-         
-         cv.drawBitmap( watermark, w - ww + 5, h - wh + 5, null );
-         
-         cv.save( Canvas.ALL_SAVE_FLAG );
-         
-         cv.restore();
-         return newb;  
-     }  
-    
-  private static Bitmap codec(Bitmap src, Bitmap.CompressFormat format,  
-                                     int quality) {  
-             ByteArrayOutputStream os = new ByteArrayOutputStream();  
-             src.compress(format, quality, os);              
-   
-             byte[] array = os.toByteArray();  
-             return BitmapFactory.decodeByteArray(array, 0, array.length);  
-         }  
-   
- static byte[] streamToBytes(InputStream is) {  
-       ByteArrayOutputStream os = new ByteArrayOutputStream(1024);  
-       byte[] buffer = new byte[1024];  
-       int len;  
-       try {  
-              while ((len = is.read(buffer)) >= 0) {  
-              os.write(buffer, 0, len);  
-              }  
-           } catch (java.io.IOException e) {  
-   
-           }  
-           return os.toByteArray();  
- }  
-   
-     
-     static Bitmap getViewBitmap(View v) {  
-           
-         v.clearFocus();  
-         v.setPressed(false);  
-   
-         
-         boolean willNotCache = v.willNotCacheDrawing();  
-         v.setWillNotCacheDrawing(false);   
-         int color = v.getDrawingCacheBackgroundColor();  
-         v.setDrawingCacheBackgroundColor(0);  
-         if (color != 0) {  
-             v.destroyDrawingCache();  
-         }  
-         v.buildDrawingCache();  
-         Bitmap cacheBitmap = v.getDrawingCache();  
-         if (cacheBitmap == null) {  
-             Log.e(TAG, "failed getViewBitmap(" + v + ")", new RuntimeException());  
-             return null;  
-         }  
-         Bitmap bitmap = Bitmap.createBitmap(cacheBitmap);  
-         
-         v.destroyDrawingCache();  
-         v.setWillNotCacheDrawing(willNotCache);  
-         v.setDrawingCacheBackgroundColor(color);  
-         return bitmap;  
-     }  
 
 
- 读取raw资源文件中的mp3文件,然后通过音乐播放器播放:  
-   
-     
-     private void writeMP3ToSDcard(String fileName, Context context) {  
-         byte[] buffer = new byte[1024 * 8];  
-         int read;  
-         BufferedInputStream bin = new BufferedInputStream(context.getResources().openRawResource(R.raw.ring));  
-         try {  
-             BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(fileName));  
-             while ((read = bin.read(buffer)) > -1) {  
-                 bout.write(buffer, 0, read);  
-             }  
-             bout.flush();  
-             bout.close();  
-             bin.close();  
-         } catch (FileNotFoundException e) {  
-             e.printStackTrace();  
-         } catch (IOException e) {  
-             e.printStackTrace();  
-         }  
-     }  
-   
-   
- Intent intent = new Intent();  
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
- intent.setAction(android.content.Intent.ACTION_VIEW);  
- intent.setDataAndType(Uri.fromFile(newFile("XXXXmp3的文件全路径")),"audio/*");  
- startActivity(intent);  
 
绘制图像倒影 
- private void    
- _Init()     
- {     
-   m_paint = new Paint(Paint.ANTI_ALIAS_FLAG);     
-   LinearGradient lg = new LinearGradient(     
-     0, 0, 0, m_nShadowH,      
-     0xB0FFFFFF, 0x00000000,     
-     Shader.TileMode.CLAMP);     
-   m_paint.setShader(lg);     
-   m_paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY));     
- }     
-     
- @Override protected void      
- onDraw(Canvas canvas)     
- {     
-   super.onDraw(canvas);     
-     
-   int nX = 0;     
-   int nY = 20;     
-     
-   _DrawNormalImg(canvas, nX, nY);     
-   _DrawMirror(canvas, nX, nY);     
- }      
-     
- private void    
- _DrawNormalImg(Canvas canvas, int nX, int nY)     
- {     
-   canvas.save(Canvas.MATRIX_SAVE_FLAG);     
-   canvas.translate(nX, nY);        
-   m_dw.draw(canvas);     
-   canvas.restore();     
- }     
-     
- private void    
- _DrawMirror(Canvas canvas, int nX, int nY)     
- {     
-   int nW = m_dw.getIntrinsicWidth();     
-   int nH = m_dw.getIntrinsicHeight();     
-     
-   
-   
-   canvas.save(Canvas.MATRIX_SAVE_FLAG);     
-   canvas.scale(1.0f, -1.0f);     
-   canvas.translate(nX, -(nY + nH * 2));     
-   canvas.clipRect(0, nH, nW, nH - m_nShadowH);     
-   m_dw.draw(canvas);     
-   canvas.restore();     
-     
-   
-   
-   canvas.save();     
-   canvas.translate(nX, nY + nH);     
-   canvas.drawRect(0, 0, nW, m_nShadowH, m_paint);     
-   canvas.restore();     
- }    
 
Android 繪圖座標體系預設的原點在左上角,X 軸往右是越來越大的正值,而 Y 軸往下,則是越來越大的正值。要畫出垂直翻轉的圖片,其實也就是要垂直翻轉整個繪圖座標體系。在 Android 中,要如何做?答案就是 canvas.scale(1.0f, -1.0f)。很簡單吧,沒想到給 scale() 函式一個負值,就可以翻轉相對應的軸。 
在 Photoshop 中,做鏡像特效的第二步是要對這翻轉的圖片,加個由灰到黑的漸層 mask。 
在 Android 中,要畫漸層色,那就一定得用 LinearGradient 這個類別。至於要對背景圖加上個 mask,就請參考一下 Paint 的 setXfermode() 函式。_Init() 這個函式,就是負責生成一個由灰到黑漸層 mask 的 m_paint 物件。 
 
 
http://blog.csdn.net/Android_Tutor/archive/2010/11/02/5981753.aspx 
http://www.cnblogs.com/TerryBlog/archive/2012/01/08/2316482.html 
android常用图片特效处理 
http://www.eoeandroid.com/thread-170526-1-1.html 
相机(Camera)实时滤镜效果 
http://www.eoeandroid.com/thread-171528-1-1.html 
Android, WindowsPhone7, IOS ,vc2010平台40多套图片滤镜开源 
http://www.cnblogs.com/daizhj/archive/2012/05/15/2501406.html 
Android实现获取本机中所有图片 
http://www.cnblogs.com/hanyonglu/archive/2012/05/10/2494908.html
android图片处理方法(不断收集中),布布扣,bubuko.com
android图片处理方法(不断收集中)
标签:android   des   blog   http   java   color   
原文地址:http://www.cnblogs.com/xiaochao1234/p/3852784.html