美文网首页
Android图像效果

Android图像效果

作者: 小城哇哇 | 来源:发表于2022-10-12 18:18 被阅读0次

    Android允许您通过在图像上添加不同类型的效果来操纵图像。您可以轻松应用图像处理技术在图像上添加某些类型的效果。效果可以是亮度,暗度,灰度转换等。

    安卓提供了位图类来处理图像。这可以在安卓图形位图下找到。可以通过多种方法实例化位图。我们正在从图像视图创建图像的位图。

    private Bitmap bmp;
    private ImageView img;
    img = (ImageView)findViewById(R.id.imageView1);
    BitmapDrawable  abmp = (BitmapDrawable)img.getDrawable();
    

    现在,我们将通过调用位图绘制类的 getBitmap() 函数来创建位图。它的语法如下:

    bmp = abmp.getBitmap();
    

    图像只不过是一个二维矩阵,处理位图的方式相同,图像由像素组成。因此,您将从此位图中获取像素并对其应用处理。其语法如下 :

    for(int i=0; i<bmp.getWidth(); i++){
       for(int j=0; j<bmp.getHeight(); j++){
          int p = bmp.getPixel(i, j);
       }
    }
    

    获取getWidth() 和 getHeight() 函数返回矩阵的高度和宽度。方法返回指定索引处的像素。获得像素后,您可以根据需要轻松操作它。

    除了这些方法之外,还有其他方法可以帮助我们更好地操纵图像。

    下面的示例演示了位图上的一些图像效果。它创建了一个基本应用程序,允许您将图片转换为灰度等等。

    要试验此示例,您需要在实际设备上运行此示例。

    步骤:
    1、您将使用安卓工作室在软件包下创建一个安卓应用程序。
    2、修改 src/主活动.java文件以添加必要的代码。
    3、修改 res/布局/activity_main以添加相应的 XML 组件。
    4、运行应用程序并选择正在运行的Android设备,并在其上安装应用程序并验证结果。
    以下是修改后的主要活动.java的内容。

    package com.example.sairamkrishna.myapplication;
    
    import android.graphics.Bitmap;
    import android.graphics.Color;
    import android.graphics.drawable.BitmapDrawable;
    import android.support.v7.app.ActionBarActivity;
    
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    
    public class MainActivity extends ActionBarActivity {
       Button b1, b2, b3;
       ImageView im;
       
       private Bitmap bmp;
       private Bitmap operation;
       
       @Override
       protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          
          b1 = (Button) findViewById(R.id.button);
          b2 = (Button) findViewById(R.id.button2);
          b3 = (Button) findViewById(R.id.button3);
          im = (ImageView) findViewById(R.id.imageView);
          
          BitmapDrawable abmp = (BitmapDrawable) im.getDrawable();
          bmp = abmp.getBitmap();
       }
       
       public void gray(View view) {
          operation = Bitmap.createBitmap(bmp.getWidth(),bmp.getHeight(), bmp.getConfig());
          double red = 0.33;
          double green = 0.59;
          double blue = 0.11;
          
          for (int i = 0; i < bmp.getWidth(); i++) {
             for (int j = 0; j < bmp.getHeight(); j++) {
                int p = bmp.getPixel(i, j);
                int r = Color.red(p);
                int g = Color.green(p);
                int b = Color.blue(p);
                
                r = (int) red * r;
                g = (int) green * g;
                b = (int) blue * b;
                operation.setPixel(i, j, Color.argb(Color.alpha(p), r, g, b));
             }
          }
          im.setImageBitmap(operation);
       }
       
       public void bright(View view){
          operation= Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(),bmp.getConfig());
          
          for(int i=0; i<bmp.getWidth(); i++){
             for(int j=0; j<bmp.getHeight(); j++){
                int p = bmp.getPixel(i, j);
                int r = Color.red(p);
                int g = Color.green(p);
                int b = Color.blue(p);
                int alpha = Color.alpha(p);
                
                r = 100  +  r;
                g = 100  + g;
                b = 100  + b;
                alpha = 100 + alpha;
                operation.setPixel(i, j, Color.argb(alpha, r, g, b));
             }
          }
          im.setImageBitmap(operation);
       }
       
       public void dark(View view){
          operation= Bitmap.createBitmap(bmp.getWidth(),bmp.getHeight(),bmp.getConfig());
          
          for(int i=0; i<bmp.getWidth(); i++){
             for(int j=0; j<bmp.getHeight(); j++){
                int p = bmp.getPixel(i, j);
                int r = Color.red(p);
                int g = Color.green(p);
                int b = Color.blue(p);
                int alpha = Color.alpha(p);
                
                r =  r - 50;
                g =  g - 50;
                b =  b - 50;
                alpha = alpha -50;
                operation.setPixel(i, j, Color.argb(Color.alpha(p), r, g, b));
             }
          }
          im.setImageBitmap(operation);
       }
       
       public void gama(View view) {
          operation = Bitmap.createBitmap(bmp.getWidth(),bmp.getHeight(),bmp.getConfig());
          
          for(int i=0; i<bmp.getWidth(); i++){
             for(int j=0; j<bmp.getHeight(); j++){
                int p = bmp.getPixel(i, j);
                int r = Color.red(p);
                int g = Color.green(p);
                int b = Color.blue(p);
                int alpha = Color.alpha(p);
                
                r =  r + 150;
                g =  0;
                b =  0;
                alpha = 0;
                operation.setPixel(i, j, Color.argb(Color.alpha(p), r, g, b));
             }
          }
          im.setImageBitmap(operation);
       }
       
       public void green(View view){
          operation = Bitmap.createBitmap(bmp.getWidth(),bmp.getHeight(), bmp.getConfig());
          
          for(int i=0; <bmp.getWidth(); i++){
             for(int j=0; j<bmp.getHeight(); j++){
                int p = bmp.getPixel(i, j);
                int r = Color.red(p);
                int g = Color.green(p);
                int b = Color.blue(p);
                int alpha = Color.alpha(p);
                
                r =  0;
                g =  g+150;
                b =  0;
                alpha = 0;
                operation.setPixel(i, j, Color.argb(Color.alpha(p), r, g, b));
             }
          }
          im.setImageBitmap(operation);
       }
       
       public void blue(View view){
          operation = Bitmap.createBitmap(bmp.getWidth(),bmp.getHeight(), bmp.getConfig());
          
          for(int i=0; i<bmp.getWidth(); i++){
             for(int j=0; j<bmp.getHeight(); j++){
                int p = bmp.getPixel(i, j);
                int r = Color.red(p);
                int g = Color.green(p);
                int b = Color.blue(p);
                int alpha = Color.alpha(p);
                
                r =  0;
                g =  0;
                b =  b+150;
                alpha = 0;
                operation.setPixel(i, j, Color.argb(Color.alpha(p), r, g, b));
             }
          }
          im.setImageBitmap(operation);
       }
    }
    Following is the modified content of the xml res/layout/activity_main.xml.
    
    Here abc indicates about logo of tutorialspoint.com
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:tools="http://schemas.android.com/tools" 
       android:layout_width="match_parent"
       android:layout_height="match_parent" 
       android:paddingLeft="@dimen/activity_horizontal_margin"
       android:paddingRight="@dimen/activity_horizontal_margin"
       android:paddingTop="@dimen/activity_vertical_margin"
       android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
       
       <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:id="@+id/textView"
          android:layout_alignParentTop="true"
          android:layout_centerHorizontal="true"
          android:textSize="30dp"
          android:text="Image Effects" />
          
       <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Tutorials Point"
          android:id="@+id/textView2"
          android:layout_below="@+id/textView"
          android:layout_centerHorizontal="true"
          android:textSize="35dp"
          android:textColor="#ff16ff01" />
          
       <ImageView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:id="@+id/imageView"
          android:layout_below="@+id/textView2"
          android:layout_centerHorizontal="true"
          android:src="@drawable/abc"/>
       
       <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Gray"
          android:onClick="gray"
          android:id="@+id/button"
          android:layout_alignParentBottom="true"
          android:layout_alignParentLeft="true"
          android:layout_alignParentStart="true"
          android:layout_marginBottom="97dp" />
          
       <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="dark"
          android:onClick="dark"
          android:id="@+id/button2"
          android:layout_alignBottom="@+id/button"
          android:layout_alignParentRight="true"
          android:layout_alignParentEnd="true" />
          
       <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Bright"
          android:onClick="bright"
          android:id="@+id/button3"
          android:layout_alignTop="@+id/button2"
          android:layout_centerHorizontal="true" />
          
       <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Red"
          android:onClick="gama"
          android:id="@+id/button4"
          android:layout_below="@+id/button3"
          android:layout_alignParentLeft="true"
          android:layout_alignParentStart="true" />
          
       <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Green"
          android:onClick="green"
          android:id="@+id/button5"
          android:layout_alignTop="@+id/button4"
          android:layout_alignLeft="@+id/button3"
          android:layout_alignStart="@+id/button3" />
          
       <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="blue"
          android:onClick="blue"
          android:id="@+id/button6"
          android:layout_below="@+id/button2"
          android:layout_toRightOf="@+id/textView"
          android:layout_toEndOf="@+id/textView" />
          
    </RelativeLayout>
    

    以下是安卓智能.xml文件的内容。

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="com.example.sairamkrishna.myapplication" >
       <application
          android:allowBackup="true"
          android:icon="@mipmap/ic_launcher"
          android:label="@string/app_name"
          android:theme="@style/AppTheme" >
       
          <activity
             android:name=".MainActivity"
             android:label="@string/app_name" >
          
             <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
             
          </activity>
          
       </application>
    </manifest>
    

    相关文章

      网友评论

          本文标题:Android图像效果

          本文链接:https://www.haomeiwen.com/subject/pnifzrtx.html