Cómo trabajar con Bitmap (Effects) en Android?

Quiero añadir algunos efectos a las imágenes en Android. Estoy importando el archivo de la biblioteca en Aviary . Soy apenas un fresco al desarrollo de Androide. ¿Puede alguien ser lo suficientemente amable para proporcionar un pequeño ejemplo de cómo utilizar los métodos del archivo de la biblioteca? Gracias por adelantado. Felices chicos de Navidad. También he intentado un ejemplo desde aquí . Pero estoy confundido en implementar el ejemplo.

CÓDIGO:

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.butterfly_image); iv.setImageBitmap(src); Button b = (Button) findViewById(R.id.button); b.setOnClickListener(this); } public void onClick(View arg0) { iv = (ImageView) findViewById(R.id.butterfly_image); System.out.println("Inside onClick()"); src = doHighlightImage(src); System.out.println("doHighlightImage has been passed"); iv.setImageBitmap(src); } public static Bitmap doHighlightImage(Bitmap src) { // create new bitmap, which will be painted and becomes result image Bitmap bmOut = Bitmap.createBitmap(src.getWidth() + 96, src.getHeight() + 96, Bitmap.Config.ARGB_8888); // setup canvas for painting Canvas canvas = new Canvas(bmOut); // setup default color canvas.drawColor(0, PorterDuff.Mode.CLEAR); // create a blur paint for capturing alpha Paint ptBlur = new Paint(); ptBlur.setMaskFilter(new BlurMaskFilter(15, Blur.NORMAL)); int[] offsetXY = new int[2]; // capture alpha into a bitmap Bitmap bmAlpha = src.extractAlpha(ptBlur, offsetXY); // create a color paint Paint ptAlphaColor = new Paint(); ptAlphaColor.setColor(0xFFFFFFFF); // paint color for captured alpha region (bitmap) canvas.drawBitmap(bmAlpha, offsetXY[0], offsetXY[1], ptAlphaColor); // free memory bmAlpha.recycle(); // paint the image source canvas.drawBitmap(src, 0, 0, null); // return out final image return bmOut; } 

No estoy seguro de si la implementación del código anterior es correcta o incorrecta. No se ejecuta como se esperaba, así que supongo que es incorrecto. Mi logcat muestra NullPointerException mientras llama al método.

Logcat:

 12-25 16:14:45.150: I/System.out(13695): Inside onClick() 12-25 16:14:45.150: W/dalvikvm(13695): threadid=1: thread exiting with uncaught exception (group=0x4118d438) 12-25 16:14:45.160: E/AndroidRuntime(13695): FATAL EXCEPTION: main 12-25 16:14:45.160: E/AndroidRuntime(13695): java.lang.NullPointerException 12-25 16:14:45.160: E/AndroidRuntime(13695): at com.example.effects.MainActivity.doHighlightImage(MainActivity.java:47) 12-25 16:14:45.160: E/AndroidRuntime(13695): at com.example.effects.MainActivity.onClick(MainActivity.java:41) 12-25 16:14:45.160: E/AndroidRuntime(13695): at android.view.View.performClick(View.java:4101) 12-25 16:14:45.160: E/AndroidRuntime(13695): at android.view.View$PerformClick.run(View.java:17082) 12-25 16:14:45.160: E/AndroidRuntime(13695): at android.os.Handler.handleCallback(Handler.java:615) 12-25 16:14:45.160: E/AndroidRuntime(13695): at android.os.Handler.dispatchMessage(Handler.java:92) 12-25 16:14:45.160: E/AndroidRuntime(13695): at android.os.Looper.loop(Looper.java:137) 12-25 16:14:45.160: E/AndroidRuntime(13695): at android.app.ActivityThread.main(ActivityThread.java:4954) 12-25 16:14:45.160: E/AndroidRuntime(13695): at java.lang.reflect.Method.invokeNative(Native Method) 12-25 16:14:45.160: E/AndroidRuntime(13695): at java.lang.reflect.Method.invoke(Method.java:511) 12-25 16:14:45.160: E/AndroidRuntime(13695): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798) 12-25 16:14:45.160: E/AndroidRuntime(13695): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565) 12-25 16:14:45.160: E/AndroidRuntime(13695): at dalvik.system.NativeStart.main(Native Method) 

También vine a saber de ciertos postes en StackOverFlow que algunos de los ejemplos de http://xjaphx.wordpress.com no están trabajando como esperado. Cualquier ayuda será apreciada. Feliz Navidad.

Supongo que la variable de mapa de bits src es nula. onCreate() asignar la imagen como se onCreate() continuación: Y no necesita inicializar su ImageView dos veces como ya lo ha declarado en onCreate()

Cambiar el código de onClick como se muestra a continuación:

Para obtener la imagen de su ImageView necesita obtener la imagen como se muestra a continuación:

 Bitmap src= ((BitmapDrawable)iv.getDrawable()).getBitmap(); public void onClick(View arg0) { System.out.println("Inside onClick()"); src = doHighlightImage(src); System.out.println("doHighlightImage has been passed"); iv.setImageBitmap(src); } 

Usted puede ver mi respuesta here.It será útil para manejar su mapa de bits de manera eficiente.

¿Cómo hacer la aplicación más sensible que utiliza varios mapas de bits?

  • Reciclaje de bitmaps
  • Cómo asignar una imagen (mapa de bits) mediante programación a un contacto?
  • Tamaño de imagen de mapa de bits de Android
  • Cómo cambiar el color de fondo de un mapa de bits transparente guardado
  • Android - Excepción de memoria
  • BitmapFactory.decodeFile de memoria con imágenes 2400x2400
  • Imagen sin recortar
  • Bitmap escalado que mantiene la proporción de aspecto
  • ¿Cómo posiciono mi mapa de bits en el lienzo usando una matriz?
  • Android no libera Bitmap de la memoria
  • Android: ¿La manera más fácil de hacer que un WebView muestre un mapa de bits?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.