以下代码是我到目前为止所得到的。但是,有两个问题:
我想要内部和外部的发光效果,看起来类似于Photoshop的混合选项。但是我只设法制作外部发光,如果我设置BlurMaskFilter.Blur.INNER
或其他值,则整个图像被阻挡,而不仅仅是边缘。
尽管我将“ 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;
答案 0 :(得分:4)
这是解决方案:
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;
}
这会让您的问题更多,以获得更多图片位图效果,请访问博客上的这些链接:
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
答案 1 :(得分:4)
根据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);
}
答案 2 :(得分:1)
我认为android中没有方法可以创建发光效果。你必须从头开始自己制作它们或者找一些支持它的java库。
我最喜欢使用的最简单的方法是制作图像层。基本上你定义了一个相对布局,并将2个imageViews放在另一个上面。只需在自己的图层中创建photoshop效果并栅格化该图层,将其保存到png,将其放在图像上。但是,如果您对大图像使用此方法,则可以轻松获得该VM超出异常。根据视图大小重新采样位图是解决此问题的一个非常好的解决方案。
我想到的另一种方法是在图像上绘制渐变(例如:中间透明的径向渐变和边缘之间的白色 - 以获得白色光晕)但这种方式需要花费大量时间来调整直到你需要的,所以在我看来是不值得的努力。)
此处还有一个用于制作java图像过滤器的网站的链接。也许你可以找到适合你的工作。
答案 3 :(得分:1)
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
答案 4 :(得分:1)
这样做的方法是创建一个滤色器轮廓,然后模糊它。此示例可能有所帮助: Android Bitmap contour
答案 5 :(得分:-2)
这个怎么样:
<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>