android - programacion - ¿Cómo hacer efecto de brillo alrededor de un mapa de bits?
manual de android en pdf (6)
Aquí está la solución:
http://www.shaikhhamadali.blogspot.ro/2013/06/highlightfocusshadow-image-in-imageview.html
public Bitmap highlightImage(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;
}
esto resolverá su pregunta para obtener más efectos de mapa de bits de imagen visite estos enlaces en el blog:
www.shaikhhamadali.blogspot.com
Highlight/focus/shadow the image in ImageView
Invert the Image in ImageView
Gray Scale the Image in ImageView (Android)
set Gamma of image in ImageView
Saturation Filter Effect on image in ImageView
Hue Filter Effect on image in ImageView
Engraving Effect on image in ImageView
Emboss Effect on image in ImageView
Smooth Effect on image in ImageView
Mean Removal Effect on image in ImageView
Set sharpness of the image in ImageView
Gaussian Blur the image(Bitmap) in ImageView
Convolution Matrix for image processing
Color Boost the image(Bitmap) in ImageView
Set brightness of the image(increase,decrease) in ImageView
B/W Contrast and Color Contrast the image in ImageView
Reducing color depth of image in ImageView
Sepia-toning Effect (Photography) of image in ImageView
filter color channels/ set color channels of image in ImageView
Change/Replacement/Remove pixel colors in ImageView
Water Mark the Image in ImageView
El siguiente código es lo que tengo hasta ahora. Sin embargo, hay 2 temas:
Quiero efectos de brillo interno y externo, que se parecen a las opciones de fusión de Photoshop. Pero solo logré hacer que el brillo exterior, si configuro
BlurMaskFilter.Blur.INNER
u otro valor, se bloquea la imagen completa, en lugar de solo los bordes.A pesar de que establezco " FF " como valor alfa, el color del resplandor sigue siendo muy oscuro.
Bitmap alpha = origin.extractAlpha(); BlurMaskFilter blurMaskFilter = new BlurMaskFilter(5, BlurMaskFilter.Blur.OUTER); Paint paint = new Paint(); paint.setMaskFilter(blurMaskFilter); paint.setColor(0xffffffff); Canvas canvas = new Canvas(origin); canvas.drawBitmap(alpha, 0, 0, paint); return origin;
Creo que no hay ningún método en Android para crear efectos de brillo. Tienes que crearlos desde cero o encontrar alguna biblioteca java que admita esto.
Lo más simple que prefiero usar es hacer capas de imágenes. Básicamente, se define un diseño relativo y se colocan 2 vistas de imagen una sobre otra. simplemente cree el efecto de Photoshop en su propia capa y rasterice esa capa, guárdelo en png y colóquelo sobre su imagen. Pero tenga cuidado si está utilizando este método con imágenes grandes, puede obtener fácilmente que la VM superó la excepción. Volver a muestrear los mapas de bits según el tamaño de la vista es una solución bastante buena para este problema.
el otro método que me viene a la mente es dibujar gradientes sobre su imagen (por ejemplo, un degradado radial que es transparente en el medio y blanco entre los bordes, para obtener un brillo blanco), pero de esta manera se necesita mucho tiempo para sintonizar exactamente Lo que necesita, en mi opinión, no vale la pena el esfuerzo).
También aquí hay un enlace para un sitio que hace filtros de imágenes java. Tal vez puedas encontrar algo que haga el trabajo por ti.
La forma de hacerlo es crear un contorno de filtro de color y luego difuminarlo. Este ejemplo puede ayudar: Android Bitmap contour
Prueba este.
private void setBackgroundGlow(ImageView imgview, int imageicon,int r,int g,int b)
{
// An added margin to the initial image
int margin = 24;
int halfMargin = margin / 2;
// the glow radius
int glowRadius = 40;
// the glow color
int glowColor = Color.rgb(r, g, b);
// The original image to use
Bitmap src = BitmapFactory.decodeResource(getResources(),imageicon);
// extract the alpha from the source image
Bitmap alpha = src.extractAlpha();
// The output bitmap (with the icon + glow)
Bitmap bmp = Bitmap.createBitmap(src.getWidth() + margin, src.getHeight() + margin, Bitmap.Config.ARGB_8888);
// The canvas to paint on the image
Canvas canvas = new Canvas(bmp);
Paint paint = new Paint();
paint.setColor(glowColor);
// outer glow
paint.setMaskFilter(new BlurMaskFilter(glowRadius, Blur.OUTER));//For Inner glow set Blur.INNER
canvas.drawBitmap(alpha, halfMargin, halfMargin, paint);
// original icon
canvas.drawBitmap(src, halfMargin, halfMargin, null);
imgview.setImageBitmap(bmp);
}
Qué tal esto:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@color/Black"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:textColor="@color/White"
android:layout_width="wrap_content"
android:text="Glowing Text"
android:layout_height="wrap_content"
android:padding="2dp"
android:shadowColor="@color/White"
android:shadowDx="0"
android:shadowDy="0"
android:shadowRadius="3" />
</LinearLayout>
encontrado aquí: http://blog.stylingandroid.com/archives/378 :
BlurMaskFilter.Blur.NORMAL maybe fit your necessary.
Comments from official:
NORMAL(0), //!< blur inside and outside of the original border
SOLID(1), //!< include the original mask, blur outside
OUTER(2), //!< just blur outside the original border
INNER(3); //!< just blur inside the original border