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:
- Cómo escalar un mapa de bits de más de 4096 píxeles?
- Imagen seleccionada de gallary no va a establecer en ImageView
- ¿Cómo mantener una imagen en una actividad de Android durante un cambio de orientación?
- Tomar una captura de pantalla usando MediaProjection
- Cómo redimensionar un mapa de bits eficientemente y sin perder calidad en android
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.
- Impresión POS / ESC Apex3 image SOS
- Cómo adjuntar un mapa de bits al iniciar ACTION_SEND
- Recortar una transformación de perspectiva de la imagen en Android
- ¿Por qué esto no funciona a veces?
- ¿Es posible mostrar una miniatura de vídeo desde una URL en Android 4 o superior?
- Cómo desenfocar un mapa de bits (Android)?
- DrawBitmap () y setPixels (): ¿cuál es el paso?
- Escala y traducción de un mapa de bits en android
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?
- Error de Android: recreate () debe ser llamado desde el subproceso principal
- Eclipse ADT se congela al ejecutar aplicaciones de Android