How to make glow effect around a bitmap?

后端 未结 6 1107
盖世英雄少女心
盖世英雄少女心 2020-12-23 10:35

The following code is what I got so far. However, there are 2 issues:

  1. I want both inner and outer glow effects, which look similar to the Photoshop\'s blend

相关标签:
6条回答
  • 2020-12-23 10:53

    How about this:

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

    found here: http://blog.stylingandroid.com/archives/378:

    0 讨论(0)
  • 2020-12-23 10:55

    Try this, based on XGouchet's answer.

    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 讨论(0)
  • 2020-12-23 11:00
    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
    
    0 讨论(0)
  • 2020-12-23 11:03

    I think there is no method in android to create glow effects. you have to make them yourself from scratch or find some java library that supports this.

    the simplest thing that i prefer to use is making layers of images. basically you define a relative layout and put 2 imageViews one on top of another. just create the photoshop effect in its own layer and rasterize that layer, save it to png place it on top of your image. But careful if you are using this method with large images you can easily get that VM exceeded exception. Resampling the bitmaps according to the view size is a pretty good solution for this issue.

    the other method that comes to my mind is drawing gradients over your image (ex: radial gradient that is transparent in the middle and white among the edges- to get a white glow) but this way takes a lot of time to tune up to exactly what you need so in my opinion isn't worth the effort).

    Also here is a link for a site that makes java image filters. maybe you can find something that does the job for you.

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

    0 讨论(0)
  • 2020-12-23 11:05

    here is the solution:

    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;
        }
    

    this will dove your question for more image bitmap effects visit these links on 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
    
    0 讨论(0)
  • 2020-12-23 11:08

    The way to do this is to create a color filter contour, then blur it. This example may help: Android Bitmap contour

    0 讨论(0)
提交回复
热议问题