Java 修改位图后,如何修改";修改的;位图等等?

Java 修改位图后,如何修改";修改的;位图等等?,java,android,image,button,bitmap,Java,Android,Image,Button,Bitmap,假设我捕获了一个名为\u originalBitmap 然后我修改将某种类型的亮度增加过滤器应用于\u originalBitmap filteredBitmap=_BrightnessIncrease.filterImage(_originalBitmap) 然后单击Apply按钮,将filteredBitmap保存到内存位置 我想再次应用亮度增加,,但要在过滤器位图上。有人知道我怎么做吗 到目前为止的代码- 亮度增加按钮: Button filter6Button = (Button) fi

假设我捕获了一个名为
\u originalBitmap

  • 然后我修改将某种类型的
    亮度增加
    过滤器应用于
    \u originalBitmap

    filteredBitmap=_BrightnessIncrease.filterImage(_originalBitmap)

  • 然后单击
    Apply
    按钮,将
    filteredBitmap
    保存到内存位置

  • 我想再次应用
    亮度增加
    ,但要在
    过滤器位图
    上。有人知道我怎么做吗
  • 到目前为止的代码- 亮度增加按钮:

    Button filter6Button = (Button) findViewById(R.id.filter6_button);
        filter6Button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
    
                for (int i = MainActivity.LEFT_IMAGE; i <= MainActivity.RIGHT_IMAGE; i++) {
    
                    _filteredBitmaps[i] = _BrightnessIncrease
                            .filterImage(_originalBitmaps[i]);
                    // */
                }
                _filterImageView
                        .setImageBitmap(_filteredBitmaps[MainActivity.LEFT_IMAGE]);
            }
        });
    
    按钮过滤器6按钮=(按钮)findViewById(R.id.Filter6U按钮);
    filter6Button.setOnClickListener(新视图.OnClickListener(){
    @凌驾
    公共void onClick(视图v){
    
    对于(int i=MainActivity.LEFT_IMAGE;i为什么不将过滤后的位图保存在另一个列表中

    for (int i = MainActivity.LEFT_IMAGE; i <= MainActivity.RIGHT_IMAGE; i++) {
        _filterImageView[i] = _originalBitmaps[i].copy(_originalBitmaps[i].getConfig(), true);
    } 
        Button filter6Button = (Button) findViewById(R.id.filter6_button);
        filter6Button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
    
                for (int i = MainActivity.LEFT_IMAGE; i <= MainActivity.RIGHT_IMAGE; i++) {
    
                    _filterImageView[i] = _BrightnessIncrease
                            .filterImage(_filterImageView[i]);
                    // */
                }
                _filterImageView
                        .setImageBitmap(_filterImageView[MainActivity.LEFT_IMAGE]);
            }
        });
    

    for(int i=MainActivity.LEFT_IMAGE;i为什么不使用“写入时复制”:当用户第一次在此图像上选择操作时,将原始位图复制到过滤后的位图(数组)。之后,仅对过滤后的位图进行操作(所有过滤器都使用过滤后的图像)。然后应用两次筛选器将在第一次复制图像,然后应用筛选器,第二次仅在修改后的图像上再次应用它。+1用于尝试。但是它似乎不起作用,我尝试了(int I=MainActivity.LEFT_image;我只是在初始化时使用它(复制原始位图),并确保在使用过滤器时正在更新位图数组。您可能没有将过滤后的位图保存在旧位置。好的,现在就试试看,除了您的答案之外,代码还有其他修改吗?我相信(从JavaDoc)您使用复制方法的方式不对。“尝试基于此位图[…]创建一个新位图,[…],然后将此位图的像素复制到新位图中。”因此,您必须对原始图像调用该方法,并传递其配置并分配返回值。因此,您需要:
    \u filterImageView[i]=\u originalbitmap[i]。copy(\u originalbitmap[i]。getConfig(),true)
    Where?您是否使用了patrick comments中的“复制”行?它应该可以工作,但请将日志添加到您的问题中,以便我们可以看到它在哪里崩溃。