¶ÁÊéÈË

AndroidÖ®Ð¡Ð¡Í¼Æ¬ÖÆÔì³§

·¢²¼Ê±¼ä£º 2012-11-05 09:35:12 ×÷Õߣº rapoo

Android֮ССͼƬ¼Ó¹¤³§

ÓÐʱºòÎÒÃÇÔÚÏîÄ¿ÖУ¬ÐèÒª°ÑͼƬ¼Ó¹¤Ò»Ï£¬±ÈÈç˵¼Ó¸öÔ²½Ç£¬»òÕß´òÉÏÂíÈü¿Ë»òÕßˮӡ£¬ËäÈ»²»ÊǺÜÄѵĶ«Î÷£¬µ«ÊÇûŪ¹ý£¬»¹ÊǺܾÀ½áµÄ£¬±ÈÈçÏñÎÒÕâÑùµÄС°×£¬ÏÖÔÚ¸ù¾ÝÍøÉÏһЩ´óÅ£µÄһЩ·½·¨£¬×ܽáÁËÏÂÃæÕâ¸öͼƬ¼Ó¹¤³§¹¤¾ßÀ࣬¿ÉÄÜ»¹Óиü¶àµÄÐèÇó£¬ÓÐÐèÒªµÄʱºò£¬ÔÙÈ¥ÍøÉÏÕÒ£¬¼ÌÐøÍêÉÆÖУ¬£¬Ö±½ÓÉϸú´ó¼Ò·ÖÏí´úÂ룬עÊͱȽ϶࣬¶øÇÒ¼òµ¥£¬ÎҾͲ»¶à˵ÁË£¬Ö±½ÓÉϸú´ó¼Ò·ÖÏí´úÂ룺

/** * ͼƬ¼Ó¹¤³§ *  * @author way *  */public class ImageUtil {/** * ͨ¹ý·¾¶»ñÈ¡ÊäÈëÁ÷ *  * @param path *            ·¾¶ * @return ÊäÈëÁ÷ * @throws Exception *             Òì³£ */public static InputStream getRequest(String path) throws Exception {URL url = new URL(path);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");conn.setConnectTimeout(5000);if (conn.getResponseCode() == 200) {return conn.getInputStream();}return null;}/** * ´ÓÁ÷ÖжÁÈ¡¶þ½øÖÆÊý¾Ý *  * @param inStream *            ÊäÈëÁ÷ * @return ¶þ½øÖÆÊý¾Ý * @throws Exception *             Òì³£ */public static byte[] readInputStream(InputStream inStream) throws Exception {ByteArrayOutputStream outSteam = new ByteArrayOutputStream();byte[] buffer = new byte[4096];int len = 0;while ((len = inStream.read(buffer)) != -1) {outSteam.write(buffer, 0, len);}outSteam.close();inStream.close();return outSteam.toByteArray();}/** * °ÑÒ»¸ö·¾¶×ª»»³ÉDrawable¶ÔÏó *  * @param url *            ·¾¶ * @return Drawable¶ÔÏó */public static Drawable loadImageFromUrl(String url) {URL m;InputStream i = null;try {m = new URL(url);i = (InputStream) m.getContent();} catch (MalformedURLException e1) {e1.printStackTrace();} catch (IOException e) {e.printStackTrace();}Drawable d = Drawable.createFromStream(i, "src");return d;}/** * °ÑÒ»¸ö·¾¶×ª»»³ÉDrawable¶ÔÏó *  * @param url *            ×Ö·û´®Â·¾¶ * @return Drawable¶ÔÏó * @throws Exception *             Òì³£ */public static Drawable getDrawableFromUrl(String url) throws Exception {return Drawable.createFromStream(getRequest(url), null);}/** * ´Ó·¾¶Öеõ½Î»Í¼ *  * @param url *            ×Ö·û´®Â·¾¶ * @return λͼ * @throws Exception *             Òì³£ */public static Bitmap getBitmapFromUrl(String url) throws Exception {byte[] bytes = getBytesFromUrl(url);return byteToBitmap(bytes);}/** * ´Ó·¾¶Öеõ½Ô²½Çλͼ *  * @param url *            ×Ö·û´®Â·¾¶ * @param pixels *            Ô²½Ç»¡¶È * @return Ô²½Çλͼ * @throws Exception *             Òì³£ */public static Bitmap getRoundBitmapFromUrl(String url, int pixels)throws Exception {byte[] bytes = getBytesFromUrl(url);Bitmap bitmap = byteToBitmap(bytes);return toRoundCorner(bitmap, pixels);}/** * ´Ó·¾¶Öеõ½Ô²½ÇDrawable¶ÔÏó *  * @param url *            ×Ö·û´®Â·¾¶ * @param pixels *            Ô²½Ç»¡¶È * @return Ô²½ÇDrawable¶ÔÏó * @throws Exception *             Òì³£ */public static Drawable geRoundDrawableFromUrl(String url, int pixels)throws Exception {byte[] bytes = getBytesFromUrl(url);BitmapDrawable bitmapDrawable = (BitmapDrawable) byteToDrawable(bytes);return toRoundCorner(bitmapDrawable, pixels);}/** * ´Ó·¾¶Öеõ½¶þ½øÖÆÊý¾Ý *  * @param url *            ×Ö·û´®Â·¾¶ * @return ¶þ½øÖÆÊý¾Ý * @throws Exception *             Òì³£ */public static byte[] getBytesFromUrl(String url) throws Exception {return readInputStream(getRequest(url));}/** * ´Ó¶þ½øÖÆÊý¾ÝÖеõ½Î»Í¼ *  * @param byteArray *            ¶þ½øÖÆÊý¾Ý * @return λͼ */public static Bitmap byteToBitmap(byte[] byteArray) {if (byteArray.length != 0) {return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);} else {return null;}}/** * ´Ó¶þ½øÖÆÊý¾ÝÖеõ½Drawable¶ÔÏó *  * @param byteArray *            ¶þ½øÖÆÊý¾Ý * @return Drawable¶ÔÏó */public static Drawable byteToDrawable(byte[] byteArray) {ByteArrayInputStream ins = new ByteArrayInputStream(byteArray);return Drawable.createFromStream(ins, null);}/** * °Ñλͼת»»³Æ¶þ½øÖÆÊý¾Ý *  * @param bm *            λͼ * @return ¶þ½øÖÆÊý¾Ý */public static byte[] Bitmap2Bytes(Bitmap bm) {ByteArrayOutputStream baos = new ByteArrayOutputStream();bm.compress(Bitmap.CompressFormat.PNG, 100, baos);return baos.toByteArray();}/** * °ÑDrawable¶ÔÏóת»»³ÆÎ»Í¼ *  * @param drawable *            Drawable¶ÔÏó * @return λͼ */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);drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());drawable.draw(canvas);return bitmap;}/** * ͼƬȥɫ,·µ»Ø»Ò¶ÈͼƬ *  * @param bmpOriginal *            ´«ÈëµÄͼƬ * @return ȥɫºóµÄͼƬ */public static Bitmap toGrayscale(Bitmap bmpOriginal) {int width, height;height = bmpOriginal.getHeight();width = bmpOriginal.getWidth();Bitmap bmpGrayscale = Bitmap.createBitmap(width, height,Bitmap.Config.RGB_565);Canvas c = new Canvas(bmpGrayscale);Paint paint = new Paint();ColorMatrix cm = new ColorMatrix();cm.setSaturation(0);ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);paint.setColorFilter(f);c.drawBitmap(bmpOriginal, 0, 0, paint);return bmpGrayscale;}/** * ȥɫͬʱ¼ÓÔ²½Ç *  * @param bmpOriginal *            ԭͼ * @param pixels *            Ô²½Ç»¡¶È * @return Ð޸ĺóµÄͼƬ */public static Bitmap toGrayscale(Bitmap bmpOriginal, int pixels) {return toRoundCorner(toGrayscale(bmpOriginal), pixels);}/** * °Ñλͼ±ä³ÉÔ²½Çλͼ *  * @param bitmap *            ÐèÒªÐ޸ĵÄλͼ * @param pixels *            Ô²½ÇµÄ»¡¶È * @return Ô²½Çλͼ */public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {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);final float roundPx = pixels;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;}/** * ½«BitampDrawableת»»³ÉÔ²½ÇµÄBitampDrawable *  * @param bitmapDrawable *            Ô­ÉúBitampDrawable¶ÔÏó * @param pixels *            Ô²½Ç»¡¶È * @return Ô²½ÇBitampDrawable¶ÔÏó */public static BitmapDrawable toRoundCorner(BitmapDrawable bitmapDrawable,int pixels) {Bitmap bitmap = bitmapDrawable.getBitmap();bitmapDrawable = new BitmapDrawable(toRoundCorner(bitmap, pixels));return bitmapDrawable;}/** * ͼƬˮӡÉú³ÉµÄ·½·¨ *  * @param src *            ԴͼƬλͼ * @param watermark *            ˮӡͼƬλͼ * @return ·µ»ØÒ»¸ö¼ÓÁËˮӡµÄͼƬ */public static Bitmap createBitmap(Bitmap src, Bitmap watermark) {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);// ´´½¨Ò»¸öеĺÍSRC³¤¶È¿í¶ÈÒ»ÑùµÄλͼCanvas cv = new Canvas(newb);// ³õʼ»¯»­²¼cv.drawBitmap(src, 0, 0, null);// ÔÚ 0£¬0×ø±ê¿ªÊ¼»­Èësrccv.drawBitmap(watermark, w - ww + 5, h - wh + 5, null);// ÔÚsrcµÄÓÒϽǻ­Èëˮӡcv.save(Canvas.ALL_SAVE_FLAG);// ±£´æ£¬ÓÃÀ´±£´æCanvasµÄ״̬¡£saveÖ®ºó£¬¿ÉÒÔµ÷ÓÃCanvasµÄÆ½ÒÆ¡¢·ÅËõ¡¢Ðýת¡¢´íÇС¢²Ã¼ôµÈ²Ù×÷¡£cv.restore();// ´æ´¢£¬ÓÃÀ´»Ö¸´Canvas֮ǰ±£´æµÄ״̬¡£·ÀÖ¹saveºó¶ÔCanvasÖ´ÐеIJÙ×÷¶ÔºóÐøµÄ»æÖÆÓÐÓ°Ïì¡£return newb;}}

1Â¥musicvs4Ììǰ 11:54
Èç¹ûÓнØÍ¼¾Í¸üºÃÁË£¬ÓпÕÔËÐÐÊÔÊÔ~лл²©Ö÷·ÖÏí~

¶ÁÊéÈËÍø >Android

ÈȵãÍÆ¼ö