0

帮我实现一些逻辑。我有一张通过以下方式重绘的图片:

public void onClick(View v) {
        BitmapDrawable mydrawable = (BitmapDrawable) imageView.getDrawable();
        Bitmap b = mydrawable.getBitmap();
        b = doHighlightImage(b);
        imageView.setImageBitmap(b);
    }
});

public static Bitmap doHighlightImage(Bitmap src) {
    // создадим новый битмап, который станет итоговым
    Bitmap bmOut = Bitmap.createBitmap(src.getWidth() + 96,
            src.getHeight() + 96, Bitmap.Config.ARGB_8888);
    // подключаем холст
    Canvas canvas = new Canvas(bmOut);
    // установим цвет по умолчанию
    canvas.drawColor(0, PorterDuff.Mode.CLEAR);

    // создадим размытие для прозрачности
    Paint ptBlur = new Paint();
    ptBlur.setMaskFilter(new BlurMaskFilter(15, Blur.NORMAL));
    int[] offsetXY = new int[2];
    // получим прозрачный слепок из изображения
    Bitmap bmAlpha = src.extractAlpha(ptBlur, offsetXY);
    // готовимся к рисованию
    Paint ptAlphaColor = new Paint();
    ptAlphaColor.setColor(0xFFFFFFFF);
    // закрашиваем цветом цветной слепок (bitmap)
    canvas.drawBitmap(bmAlpha, offsetXY[0], offsetXY[1], ptAlphaColor);
    // освобождаем ресурсы
    bmAlpha.recycle();

    // рисуем исходник
    canvas.drawBitmap(src, 0, 0, null);

    // возвращаем финальный рисунок
    return bmOut;
}

但是,重绘后我必须返回图片的初始状态。这个怎么做?

4

1 回答 1

0

你是什​​么意思must return the initial state of the picture?位图是不可变的,因此只需保留对您需要的任何位图的引用,不要担心更改它 - 这是不可能的。

于 2013-09-13T10:17:11.903 回答