2010-12-02 17 views
24

El siguiente código es lo que obtuve hasta ahora. Sin embargo, hay 2 cuestiones:¿Cómo hacer efecto de brillo alrededor de un mapa de bits?

  1. Quiero ambos efectos de brillo interior y exterior, que se parecen a opciones de fusión del Photoshop. Pero solo logré hacer brillar el brillo externo, si configuro BlurMaskFilter.Blur.INNER u otro valor, la imagen completa se bloquea, en lugar de solo los bordes.

  2. A pesar de establecer "FF" como valor alfa, el color del brillo es 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; 
    

alt text

Respuesta

1

creo que no hay un método en Android para crear efectos de brillo. tienes que hacerlos tú mismo desde cero o encontrar alguna biblioteca java que admita esto.

Lo más simple que prefiero usar es crear capas de imágenes. básicamente se define un diseño relativo y se colocan 2 imageViews uno encima de otro. solo crea el efecto de photoshop en su propia capa y rasteriza esa capa, guárdala en png colócala en la parte superior de tu imagen. Pero cuidado si está utilizando este método con imágenes grandes, puede obtener fácilmente que la VM exceda la excepción. Volver a muestrear los mapas de bits de acuerdo con 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 degradados sobre su imagen (por ejemplo, gradiente radial que es transparente en el centro y blanco entre los bordes, para obtener un brillo blanco) pero de esta manera lleva mucho tiempo ajustar exactamente lo que necesita, por lo que en mi opinión no vale la pena el esfuerzo).

También aquí hay un enlace para un sitio que hace filtros de imagen java. tal vez puedas encontrar algo que haga el trabajo por ti.

http://www.jhlabs.com/ip/filters/index.html

-2

¿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> 

encontrar aquí: http://blog.stylingandroid.com/archives/378:

+3

La pregunta era acerca de agregar brillo a mapas de bits, no texto !!! – Rodja

0
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 
1

La manera de hacer esto es crear un contorno filtro de color, a continuación, desenfoque. Este ejemplo puede ayudar: Android Bitmap contour

4

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 paloma su pregunta para obtener más efectos de imagen de mapa de bits visita 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 
5

Pruebe 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); 


} 
+0

Si desea reducir el radio de brillo alrededor del mapa de bits según el requisito que U tenga. – Nik

+2

Por favor [respuestas de atributo] (http://blog.stackoverflow.com/2009/06/attribution-required/). [Respuesta original] (http://stackoverflow.com/a/12162080/1642079) –

Cuestiones relacionadas