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中的“复制”行?它应该可以工作,但请将日志添加到您的问题中,以便我们可以看到它在哪里崩溃。