亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android實現圖片反轉、翻轉、旋轉、放大和縮小

2020-04-11 11:26:52
字體:
來源:轉載
供稿:網友

**********************************************************************

android 實現圖片的翻轉

**********************************************************************

Resources res = this.getContext().getResources(); img = BitmapFactory.decodeResource(res, R.drawable.aa); Matrix matrix = new Matrix(); matrix.postRotate(180); /*翻轉180度*/ int width = img.getWidth(); int height = img.getHeight(); img_a = Bitmap.createBitmap(img, 0, 0, width, height, matrix, true);

然后可以直接把img_a draw到畫布上,canvas.drawBitmap(img_a, 10, 10, p);

Matrix 是一個處理翻轉、縮放等圖像效果的重要類,Matrix.postScale 可設置縮放比例,默認為1

**********************************************************************
android 實現圖片的旋轉

**********************************************************************

public class ex04_22 extends Activity{ private ImageView mImageView;private Button btn1,btn2;private TextView mTextView;private AbsoluteLayout layout1;private int ScaleTimes=1,ScaleAngle=1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mImageView=(ImageView)findViewById(R.id.myImageView); final Bitmap bmp=BitmapFactory.decodeResource(this.getResources(),R.drawable.ex04_22_1); final int widthOrig=bmp.getWidth(); final int heightOrig=bmp.getHeight(); mImageView.setImageBitmap(bmp); btn1=(Button)findViewById(R.id.myButton1); btn1.setOnClickListener(new OnClickListener(){ public void onClick(View v){ ScaleAngle--; if(ScaleAngle<-60){ ScaleAngle=-60; } int newWidth=widthOrig*ScaleTimes; int newHeight=heightOrig*ScaleTimes; float scaleWidth=((float)newWidth)/widthOrig; float scaleHeight=((float)newHeight)/heightOrig; Matrix matrix=new Matrix(); matrix.postScale(scaleWidth, scaleHeight); matrix.setRotate(5*ScaleAngle); Bitmap resizeBitmap=Bitmap.createBitmap(bmp, 0, 0, widthOrig, heightOrig, matrix, true); BitmapDrawable myNewBitmapDrawable=new BitmapDrawable(resizeBitmap); mImageView.setImageDrawable(myNewBitmapDrawable); } }); btn2=(Button)findViewById(R.id.myButton2); btn2.setOnClickListener(new OnClickListener(){ public void onClick(View v){ ScaleAngle++; if(ScaleAngle>60){ ScaleAngle=60; } int newWidth=widthOrig*ScaleTimes; int newHeight=heightOrig*ScaleTimes; float scaleWidth=((float)newWidth)/widthOrig; float scaleHeight=((float)newHeight)/heightOrig; Matrix matrix=new Matrix(); matrix.postScale(scaleWidth, scaleHeight); matrix.setRotate(5*ScaleAngle); Bitmap resizeBitmap=Bitmap.createBitmap(bmp, 0, 0, widthOrig, heightOrig, matrix, true); BitmapDrawable myNewBitmapDrawable=new BitmapDrawable(resizeBitmap); mImageView.setImageDrawable(myNewBitmapDrawable); } }); }

**********************************************************************

實現畫面淡入淡出效果可以用 :setAlpha(alpha);
alpha從255,逐漸遞減!

**********************************************************************

如何實現屏幕的滾動效果,這里有兩個關鍵點,一個是實現OnGestureListener,以便在觸摸事件發生的時候,被回調。包括按下,滾動等等,按照API文檔,需要分兩步來實現檢測手勢行為。

1)創建GestureDetector實例

2) 在onTouchEvent()方法中調用GestureDetector的onTouchEvent()方法。

另一個關鍵點是自己實現一個簡單的View,來繪制圖片。

代碼如下所示。由于,我們不需要使用layout定義,所以不需要提供xml文件。
直接在程序里面setContentView()即可。

package com.j2medev; import android.app.Activity;import android.content.Context;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Paint;import android.os.Bundle;import android.view.GestureDetector;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.view.GestureDetector.OnGestureListener; public class HorizontalScroll extends Activity implements OnGestureListener {private static final int X_MAX = 800;private static final int Y_MAX = 600;private int scrollX = 0;private int scrollY = 0; MyView main;Bitmap bmp;Bitmap adapt;Resources res;Paint paint;GestureDetector gestureScanner; @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); gestureScanner = new GestureDetector(this);paint = new Paint(); res = getResources();bmp = BitmapFactory.decodeResource(res, R.drawable.arc);adapt = Bitmap.createBitmap(bmp); main = new MyView(this);setContentView(main, new ViewGroup.LayoutParams(800, 600));} @Overridepublic boolean onTouchEvent(MotionEvent me) {return gestureScanner.onTouchEvent(me);} public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {main.handleScroll(distanceX, distanceY);return true;} public boolean onDown(MotionEvent e) {return true;} public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {return true;} public void onLongPress(MotionEvent e) {} public void onShowPress(MotionEvent e) {} public boolean onSingleTapUp(MotionEvent e) {return true;} // //////////////////// /////////////////// //////////////// class MyView extends View {public MyView(Context context) { super(context);} @Overrideprotected void onDraw(Canvas canvas) { canvas.drawBitmap(adapt, -scrollX, -scrollY, paint);} public void handleScroll(float distX, float distY) { // X-Axis ////////////////////////////////  if (distX > 6.0) { if (scrollX < 460) { scrollX += 15; } } else if (distX < -6.0) { if (scrollX >= 15) { scrollX -= 15; } } // //////////////////////////////////////////  // Y-AXIS ////////////////////////////////// if (distY > 6.0) { if (scrollY < 100) { scrollY += 15; } } else if (distY < -6.0) { if (scrollY >= 15) { scrollY -= 15; } } // ////////////////////////////////////////// // // if ((scrollX <= 480) && (scrollY <= 120)) { // adapt = Bitmap.createBitmap(bmp, scrollX, scrollY, 320, 480); // invalidate(); // } invalidate();}}}

**********************************************************************

教你在谷歌Android平臺中處理圖片

**********************************************************************

操作圖像像素

現在你可以對單獨的像素進行處理了。通過使用android.graphics.Bitmap API中的getPixels,可以加載像素到一個整數數組中。

在本文例子中,你將按照一定規則對每一個像素實現著色。經過這個處理后,所有的像素將被轉化為一個范圍在0到255的字節碼。

android.graphics.Bitmap API中的setPixels則用來加載這個整數數組到一個圖像中。

最后一步是通過ImageView變量mIV來更新屏幕。以下是實現這個染色過程的代碼片段。

private void TintThePicture(int deg) { int[] pix = new int[picw * pich]; mBitmap.getPixels(pix, 0, picw, 0, 0, picw, pich);  int RY, GY, BY, RYY, GYY, BYY, R, G, B, Y; double angle = (3.14159d * (double)deg) / 180.0d; int S = (int)(256.0d * Math.sin(angle)); int C = (int)(256.0d * Math.cos(angle));  for (int y = 0; y < pich; y++) for (int x = 0; x < picw; x++) { int index = y * picw + x; int r = (pix[index] >> 16) & 0xff; int g = (pix[index] >> 8) & 0xff; int b = pix[index] & 0xff; RY = ( 70 * r - 59 * g - 11 * b) / 100; GY = (-30 * r + 41 * g - 11 * b) / 100; BY = (-30 * r - 59 * g + 89 * b) / 100; Y = ( 30 * r + 59 * g + 11 * b) / 100; RYY = (S * BY + C * RY) / 256; BYY = (C * BY - S * RY) / 256; GYY = (-51 * RYY - 19 * BYY) / 100; R = Y + RYY; R = (R < 0) ? 0 : ((R > 255) ? 255 : R); G = Y + GYY; G = (G < 0) ? 0 : ((G > 255) ? 255 : G); B = Y + BYY; B = (B < 0) ? 0 : ((B > 255) ? 255 : B); pix[index] = 0xff000000 | (R << 16) | (G << 8) | B; }  Bitmap bm = Bitmap.createBitmap(picw, pich, false); bm.setPixels(pix, 0, picw, 0, 0, picw, pich);  // Put the updated bitmap into the main view mIV.setImageBitmap(bm); mIV.invalidate();  mBitmap = bm; pix = null; }

**********************************************************************

android 圖片的放大和縮小

**********************************************************************

public class ex04_22 extends Activity{private ImageView mImageView;private Button btn1,btn2;private TextView mTextView;private AbsoluteLayout layout1;private Bitmap bmp;private int id=0;private int displayWidth,displayHeight;private float scaleWidth=1,scaleHeight=1;private final static String filename="/data/data/ex04_22.lcs/ex04_22_2.png";@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//取得屏幕分辨率DisplayMetrics dm=new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);displayWidth=dm.widthPixels;displayHeight=dm.heightPixels-80;bmp=BitmapFactory.decodeResource(this.getResources(),R.drawable.ex04_22_1);layout1=(AbsoluteLayout)findViewById(R.id.layout1);mImageView=(ImageView)findViewById(R.id.myImageView);btn1=(Button)findViewById(R.id.myButton1);btn1.setOnClickListener(new OnClickListener(){public void onClick(View v){small();}});btn2=(Button)findViewById(R.id.myButton2);btn2.setOnClickListener(new OnClickListener(){public void onClick(View v){big();}});}private void small(){//獲得Bitmap的高和寬int bmpWidth=bmp.getWidth();int bmpHeight=bmp.getHeight();//設置縮小比例double scale=0.8;//計算出這次要縮小的比例scaleWidth=(float)(scaleWidth*scale);scaleHeight=(float)(scaleHeight*scale);//產生resize后的Bitmap對象Matrix matrix=new Matrix();matrix.postScale(scaleWidth, scaleHeight);Bitmap resizeBmp=Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true);if(id==0){layout1.removeView(mImageView);}else{layout1.removeView((ImageView)findViewById(id));}id++;ImageView imageView=new ImageView(this);imageView.setId(id);imageView.setImageBitmap(resizeBmp);layout1.addView(imageView);setContentView(layout1);btn2.setEnabled(true);}private void big(){//獲得Bitmap的高和寬int bmpWidth=bmp.getWidth();int bmpHeight=bmp.getHeight();//設置縮小比例double scale=1.25;//計算出這次要縮小的比例scaleWidth=(float)(scaleWidth*scale);scaleHeight=(float)(scaleHeight*scale);//產生resize后的Bitmap對象Matrix matrix=new Matrix();matrix.postScale(scaleWidth, scaleHeight);Bitmap resizeBmp=Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true);if(id==0){layout1.removeView(mImageView);}else{layout1.removeView((ImageView)findViewById(id));}id++;ImageView imageView=new ImageView(this);imageView.setId(id);imageView.setImageBitmap(resizeBmp);layout1.addView(imageView);setContentView(layout1);if(scaleWidth*scale*bmpWidth>displayWidth||scaleHeight*scale*scaleHeight>displayHeight){btn2.setEnabled(false);}}}

xml文件

<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayoutandroid:id="@+id/layout1"android:layout_width="fill_parent"android:layout_height="fill_parent"xmlns:android="http://schemas.android.com/apk/res/android"><ImageViewandroid:id="@+id/myImageView"android:layout_width="200px" android:layout_height="150px"android:src="@drawable/ex04_22_1"android:layout_x="0px"android:layout_y="0px"></ImageView><Buttonandroid:id="@+id/myButton1" android:layout_width="90px"android:layout_height="60px"android:text="縮小"android:textSize="18sp"android:layout_x="20px"android:layout_y="372px" ></Button><Buttonandroid:id="@+id/myButton2"android:layout_width="90px"android:layout_height="60px"android:text="放大"android:textSize="18sp" android:layout_x="210px"android:layout_y="372px"></Button></AbsoluteLayout>

*********************************************************************

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());// 獲得圖片的ARGB值   number = number * 255 / 100;   for (int i = 0; i < argb.length; i++) {   argb = (number << 24) | (argb & 0x00FFFFFF);// 修改最高2位的值   }   sourceImg = Bitmap.createBitmap(argb, sourceImg.getWidth(), sourceImg.getHeight(), Config.ARGB_8888);   return sourceImg; }

以上就是涉及到了Android圖片處理的所有內容,包括android圖片反轉、android 圖片翻轉、android 圖片旋轉、實現畫面淡入淡出效果、android 圖片的放大和縮小以及教你在谷歌Android平臺中處理圖片。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲自拍偷拍福利| 中文字幕精品在线视频| 国产精品久久久久99| 日韩成人黄色av| 精品夜色国产国偷在线| 欧美激情精品在线| 亚洲字幕在线观看| 7m精品福利视频导航| 国产精品视频自拍| 成人美女免费网站视频| 亚洲精品女av网站| 在线视频精品一| 国产一区二区三区视频免费| 日韩免费观看高清| 欧美黑人一级爽快片淫片高清| 久久精品视频导航| 中文字幕不卡av| 欧美日韩性视频| 日韩激情在线视频| 在线亚洲男人天堂| 亚洲亚裔videos黑人hd| 91在线精品播放| www.99久久热国产日韩欧美.com| 亚洲自拍偷拍色片视频| 51久久精品夜色国产麻豆| 亚洲视频在线免费观看| 亚洲第一中文字幕| 456国产精品| 欧美视频在线看| 国产精品自拍小视频| 色999日韩欧美国产| 精品久久久久久久久国产字幕| 日韩黄色在线免费观看| 久久人91精品久久久久久不卡| 国产精品影片在线观看| 国产999精品久久久影片官网| 亚洲欧美中文日韩在线v日本| 亚洲欧美日韩国产中文| 韩日欧美一区二区| 亚洲精品影视在线观看| 最新91在线视频| 久久影视三级福利片| 久久精品亚洲热| 亚洲福利在线视频| 欧美视频中文在线看| 欧美在线视频在线播放完整版免费观看| 欧美在线亚洲在线| 国产精品免费电影| 欧美午夜久久久| 久久精品福利视频| 久久天堂av综合合色| 欧美国产极速在线| 成人美女免费网站视频| 国产成人拍精品视频午夜网站| 国产精品入口免费视频一| 亚洲福利视频二区| 国产精品久久久久久亚洲调教| 亚洲国产精品va在线看黑人动漫| 久久五月情影视| 欧美日韩国产中文字幕| 欧美成人激情在线| 热re91久久精品国99热蜜臀| 国产国产精品人在线视| 亚洲自拍偷拍视频| 欧美极品美女电影一区| 亚洲国产又黄又爽女人高潮的| 亚洲国产成人在线播放| 国产精品v日韩精品| 国内免费久久久久久久久久久| 国产97在线播放| 久久精品国产成人| 欧美中文字幕精品| 久久免费在线观看| 欧美老肥婆性猛交视频| 日韩精品中文字幕久久臀| 欧美视频中文在线看| 成人网页在线免费观看| 欧美日韩在线免费| 亚洲国产91精品在线观看| 亚洲视频在线视频| 国产精品无av码在线观看| 欧美视频国产精品| 日韩一区二区精品视频| 久久亚洲精品毛片| 黄色精品在线看| 热久久这里只有精品| 欧美日韩国产麻豆| 91影院在线免费观看视频| 午夜精品久久久久久久男人的天堂| 欧美影院成年免费版| 97在线看免费观看视频在线观看| 日韩中文字幕精品| 亚洲理论片在线观看| 亚洲国产欧美一区| 亚洲精品国产suv| 精品视频久久久久久久| 国产极品精品在线观看| 久99久在线视频| 另类图片亚洲另类| 欧美黄色免费网站| 国产精品久久久久久婷婷天堂| 九九久久久久久久久激情| 欧美性生交xxxxx久久久| 亚洲国产私拍精品国模在线观看| 亚洲精品理论电影| 欧美wwwwww| 欧美劲爆第一页| 国产91色在线免费| 亚洲精品久久久一区二区三区| 亚洲国产成人久久综合| 亚洲色图偷窥自拍| 国产精品偷伦视频免费观看国产| 色婷婷综合久久久久中文字幕1| 国产97在线观看| 欧美色道久久88综合亚洲精品| 久久综合网hezyo| 久久久久久久久爱| 久久亚洲欧美日韩精品专区| 欧美在线视频在线播放完整版免费观看| 国产成人精品免高潮在线观看| 亚洲第一页自拍| 亚洲区bt下载| 国产精品久久久91| 欧美最猛黑人xxxx黑人猛叫黄| 欧美激情xxxx性bbbb| 国产精品黄色av| 亚洲电影天堂av| 久久影视电视剧免费网站| 欧美高跟鞋交xxxxhd| 国产精品爱啪在线线免费观看| 亚洲视频在线播放| 日韩在线中文视频| 国产一区二区黑人欧美xxxx| 热99精品里视频精品| 日韩精品丝袜在线| 亚洲综合中文字幕在线观看| 日韩av毛片网| 亚洲第一黄色网| 欧美第一黄色网| 欧美黑人狂野猛交老妇| 亚洲天堂av电影| 欧美电影院免费观看| 久久亚洲国产精品成人av秋霞| 久热精品视频在线免费观看| 777午夜精品福利在线观看| 日韩欧美极品在线观看| 日韩精品中文字幕在线观看| 久久免费精品视频| 97精品一区二区视频在线观看| 亚洲爱爱爱爱爱| 国产亚洲美女久久| 欧美一级大片在线免费观看| 亚洲一区免费网站| 91久久久久久久| 亚洲伦理中文字幕| 亚洲精品一区二区网址| 久久精品影视伊人网| 最近2019免费中文字幕视频三| 亚洲欧美国产精品va在线观看| 亚洲欧洲在线播放| 91免费国产网站| 国产精品99久久久久久www| 成人免费高清完整版在线观看| 日韩一区视频在线|