android - 线性渐变和位图着色器运行不佳

标签 android bitmap picasso

我正在尝试为 Android 库 Picasso 创建一个“转换”。这个问题(我认为)对于 ComposeShaders 的工作方式更为普遍。

我正在尝试使用位图着色器在图像顶部应用一个简单的垂直线性渐变。这是代码:

@Override
public Bitmap transform(Bitmap source) {

    Bitmap bitmap = Bitmap.createBitmap(source.getWidth(),
                                        source.getHeight(),
                                        source.getConfig());

    shaders[0] = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
    shaders[1] = new LinearGradient(0,
                                    0,
                                    0,
                                    source.getHeight(),
                                    Color.BLACK,
                                    Color.TRANSPARENT,
                                    Shader.TileMode.CLAMP);
    ComposeShader composeShader = new ComposeShader(shaders[0],
                                                    shaders[1],
                                                    PorterDuff.Mode.DST_IN);

    Paint paint = new Paint();
    paint.setAntiAlias(true);
    paint.setShader(composeShader);

    Canvas canvas = new Canvas(bitmap);
    canvas.drawPaint(paint);

    source.recycle();
    return bitmap;
}

运行转换时,我得到了漂亮的垂直渐变,但根本看不到位图。所以我基本上只得到一个垂直渐变。帮忙?

其他相关代码:

    Picasso.with(getActivity())
           .load(myValidUrl)
           .transform(new TopVignetteTransformation())
           .into(myImageview);


<ImageView
    android:background="@color/dark_gray"
    android:scaleType="centerCrop"
    android:adjustViewBounds="true"
    android:layout_height="match_parent"
    android:layout_width="match_parent"/>

最佳答案

嗯。愚蠢的错别字。为位图着色器获取错误的位图

shaders[0] = new BitmapShader(source, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);

关于android - 线性渐变和位图着色器运行不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23097359/

相关文章:

algorithm - 是否有一种已知的位图缩放算法可以产生与该算法相同的结果?

c# - 关闭从 Canvas 渲染的黑白位图的抗锯齿

java - 跟着 picasso 一起画画

java - 不裁剪图像的 picasso 圆变换

java - onNavigationItemSelected 未被调用

java - 如何将数据字符串存储到数组中

android - 如何同时在屏幕上绘制2个PNG图片

Android SwitchCompat 在 toggle() 或 setChecked() 上播放动画

c# - 将字节分配给 RGB 颜色

java - 如何在代码中使用 picasso 设置背景图像