如何围绕位图制作发光效果?

以下代码是我到目前为止所得到的。 但是,有两个问题:

  1. 我想要内部和外部发光效果,看起来类似于Photoshop的混合选项。 但是我只设法制作外部发光,如果我设置了BlurMaskFilter.Blur.INNER或其他值,则整个图像被阻挡,而不仅仅是边缘。

  2. 尽管我将“ FF ”设置为alpha值,但发光颜色仍然很暗。

     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; 

替代文字

这是解决方案:

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

这将使你的问题更多的图像位图效果访问博客上的这些链接:

http://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 

试试这个。

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

我认为android中没有方法可以创建发光效果。 你必须从头开始自己制作它们或者找一些支持它的java库。

我最喜欢使用的最简单的方法是制作图像层。 基本上你定义了一个相对布局,并将2个imageViews放在另一个上面。 只需在自己的图层中创建photoshop效果并栅格化该图层,将其保存到png,将其放在图像上。 但是,如果您对大图像使用此方法,则可以轻松获得该VM超出exception。 根据视图大小重新采样位图是解决此问题的一个非常好的解决方案。

我想到的另一种方法是在图像上绘制渐变(例如:中间透明的径向渐变和边缘之间的白色 – 以获得白色光晕)但这种方式需要花费大量时间来精确调整在我看来你需要的是不值得的努力)。

此处还有一个用于生成java图像filter的站点的链接。 也许你可以find适合你的工作。

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

 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 

这样做的方法是创建一个滤色器轮廓,然后模糊它。 这个例子可能会有所帮助: Android Bitmap轮廓

这个怎么样:

    

在这里find: http : //blog.stylingandroid.com/archives/378 :