1
私は画像でこれを達成しようとしている - リストの項目をクリックするだけでスクランブル画像と呼ばアンドロイドで画像(画像操作)をスクランブルする方法は?
を。
問題は私がこれを達成することができず、古いイメージとしてスクランブルされていないイメージを取得していることです。任意の正の回答は理解されるであろう
public class MainActivity extends AppCompatActivity {
static final String CAMERA_PIC_DIR = "/DCIM/Camera/";
ImageView iv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView) findViewById(R.id.my_image);
String ImageDir = Environment.getExternalStorageDirectory()
.getAbsolutePath() + CAMERA_PIC_DIR;
Intent i = new Intent(this, ListFiles.class);
i.putExtra("directory", ImageDir);
startActivityForResult(i,0);
}
@Override
protected void onActivityResult(int requestCode,
int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 0 && resultCode==RESULT_OK) {
String tmp = data.getExtras().getString("clickedFile");
Bitmap ImageToChange= BitmapFactory.decodeFile(tmp);
process_image(ImageToChange);
}
}
void process_image(Bitmap image) {
Bitmap bm = Bitmap.createScaledBitmap(image, 480, 320, false);
int width = bm.getWidth();
int height = bm.getHeight();
int x= width>>1;
int y= height>>1;
int[] pixels1 = new int[(width*height)];
int[] pixels2 = new int[(width*height)];
int[] pixels3 = new int[(width*height)];
int[] pixels4 = new int[(width*height)];
bm.getPixels(pixels1, 0, width, 0, 0, width>>1, height>>1);
bm.getPixels(pixels2, 0, width, x, 0, width>>1, height>>1);
bm.getPixels(pixels3, 0, width, 0, y, width>>1, height>>1);
bm.getPixels(pixels4, 0, width, x, y, width>>1, height>>1);
if(bm.isRecycled()) {
bm.setPixels(pixels2, 0, width, 0, 0, width>>1, height>>1);
bm.setPixels(pixels4, 0, width, x, 0, width>>1, height>>1);
bm.setPixels(pixels1, 0, width, 0, y, width>>1, height>>1);
bm.setPixels(pixels3, 0, width, x, y, width>>1, height>>1);
}
iv.setImageBitmap(bm);
}
}
:
は、ここでの主な活動の私のコードです。
事前にお世話になりました!
'if(bm.isRecycled()) '条件を削除してみてください。すべて正常に動作するはずです – vasart
isRecycled()を何に置き換えますか? –
これを '!bm.isRecycled() 'に置き換えてください – vasart