Android 如何使位图具有扩散效果
在我的应用程序中,我将文本转换为位图,然后我需要它平滑地变成云,然后消失。我用卷积矩阵来模糊位图,使其不相似 但我不知道如何模糊位图。通过模糊扩散,我的意思是使位图中的图片更大、更平滑。就像飞机的轨迹。首先它有锋利的边缘,然后扩散,然后消失。 有关于传播这张照片的想法吗 模糊消色差器的初步代码(不理想,需要改进)Android 如何使位图具有扩散效果,android,bitmap,convolution,Android,Bitmap,Convolution,在我的应用程序中,我将文本转换为位图,然后我需要它平滑地变成云,然后消失。我用卷积矩阵来模糊位图,使其不相似 但我不知道如何模糊位图。通过模糊扩散,我的意思是使位图中的图片更大、更平滑。就像飞机的轨迹。首先它有锋利的边缘,然后扩散,然后消失。 有关于传播这张照片的想法吗 模糊消色差器的初步代码(不理想,需要改进) newrunnable(){ @凌驾 公开募捐{ if(k
newrunnable(){
@凌驾
公开募捐{
if(k<150){
k++;
((TextView)view.findviewbyd(R.id.TextView)).setText(k+);
bitmapEffect=创建位图卷积(bitmapEffect,矩阵模糊,0.98f);
image1.setImageBitmap(bitmapEffect);
new Handler().postDelayed(这个,16);
}
}
});
私有位图createBitmap_卷积(位图src、浮点[]系数、浮点因子){
位图结果=Bitmap.createBitmap(src.getWidth(),
src.getHeight(),src.getConfig());
RenderScript RenderScript=RenderScript.create(活动);
分配输入=Allocation.createFromBitmap(renderScript,src);
分配输出=Allocation.createFromBitmap(renderScript,结果);
ScriptIntrinsicConvolve3x3卷积=ScriptIntrinsicConvolve3x3
.create(renderScript,Element.U8_4(renderScript));
卷积。设置输入(输入);
标准化(系数、因子);
卷积系数(系数);
卷积forEach(输出);
输出.copyTo(结果);
renderScript.destroy();
返回结果;
}
私有void normalize(float[]系数,float normalizeFactor){
浮点数和=0;
对于(int i=0;i<系数.length;i++){
总和+=系数[i];
}
如果(总和=0){
总和=1;
}
对于(int i=0;i<系数.length;i++){
系数[i]=系数[i]/和*normalizeFactor;
}
}
浮点[]矩阵模糊=
{1.0f,1.0f,1.0f,
1.0f,1.0f,1.0f,
1.0f,1.0f,1.0f};
是否要调整/拉伸位图
位图类具有该位图的方法。createScaledBitmap(位图、新宽度、新高度、true) 您好,您正在使用哪个API作为渲染条件。。着色器编程是很难学还是很容易,因为你可以根据需要复制粘贴所有内容?我不想调整大小。我在位图中有白色对象。我想让白色在物体周围扩散。
new Runnable() {
@Override
public void run() {
if (k < 150) {
k++;
((TextView)view.findViewById(R.id.textView)).setText(k + "");
bitmapEffect = createBitmap_convolve(bitmapEffect, matrix_blur, 0.98f);
image1.setImageBitmap(bitmapEffect);
new Handler().postDelayed(this, 16);
}
}
});
private Bitmap createBitmap_convolve(Bitmap src, float[] coefficients, float factor) {
Bitmap result = Bitmap.createBitmap(src.getWidth(),
src.getHeight(), src.getConfig());
RenderScript renderScript = RenderScript.create(activity);
Allocation input = Allocation.createFromBitmap(renderScript, src);
Allocation output = Allocation.createFromBitmap(renderScript, result);
ScriptIntrinsicConvolve3x3 convolution = ScriptIntrinsicConvolve3x3
.create(renderScript, Element.U8_4(renderScript));
convolution.setInput(input);
normalize(coefficients, factor);
convolution.setCoefficients(coefficients);
convolution.forEach(output);
output.copyTo(result);
renderScript.destroy();
return result;
}
private void normalize(float[] coefficients, float normalizeFactor) {
float sum = 0;
for (int i = 0; i < coefficients.length; i++) {
sum += coefficients[i];
}
if(sum == 0){
sum = 1;
}
for (int i = 0; i < coefficients.length; i++) {
coefficients[i] = coefficients[i] / sum * normalizeFactor;
}
}
float[] matrix_blur =
{ 1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f};