在我的应用程序中,我想从图库中选择图像并在ImageView中显示图像,并且还想将图像移动到新文件夹.我在ImageView中获得了图像,但它没有移动到另一个文件夹.谁能帮我?我使用波纹管代码来实现这个目标....
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, 1); } });
在onActivityResult中
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { Uri selectedImage = data.getData(); String[] filePathColumn = { MediaStore.Images.Media.DATA }; System.out.println("File Path Column "+filePathColumn); Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); System.out.println("Column Index "+columnIndex); picturePath = cursor.getString(columnIndex); cursor.close(); //imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); BitmapFactory.Options options=new BitmapFactory.Options(); options.inSampleSize = 3; Bitmap preview_bitmap=BitmapFactory.decodeFile(picturePath,options); System.out.println("Image patha in Messaging "+picturePath); imageView.setImageBitmap(preview_bitmap); differentpic.setText("Click on Upload if you wish to solve a different pic"); differentpic.setPadding(0, 0, 0, 30); OutputStream out; File direct = new File(Environment.getExternalStorageDirectory() + "/Solve"); if (!direct.exists()) { direct.mkdirs(); } File file = new File(Environment.getExternalStorageDirectory()+ "/Solve"+String.valueOf(System.currentTimeMillis())+"jpg"); ByteArrayOutputStream stream = new ByteArrayOutputStream(); try { file.createNewFile(); out = new FileOutputStream(file); //Bitmap bmp = intent.getExtras().get("data"); //ByteArrayOutputStream stream = new ByteArrayOutputStream(); int bytes = preview_bitmap.getByteCount(); //or we can calculate bytes this way. Use a different value than 4 if you don't use 32bit images. //int bytes = b.getWidth()*b.getHeight()*4; ByteBuffer buffer = ByteBuffer.allocate(bytes); //Create a new buffer preview_bitmap.copyPixelsToBuffer(buffer); //Move the byte data to the buffer byte[] array = buffer.array(); out.write(array); out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // TODO Auto-generated catch block } }
我做错了什么?
提前致谢
如果您有两个文件sourceFile和destinationFile的路径,那么您可以使用以下代码复制文件.
/** * copies content from source file to destination file * * @param sourceFile * @param destFile * @throws IOException */ private void copyFile(File sourceFile, File destFile) throws IOException { if (!sourceFile.exists()) { return; } FileChannel source = null; FileChannel destination = null; source = new FileInputStream(sourceFile).getChannel(); destination = new FileOutputStream(destFile).getChannel(); if (destination != null && source != null) { destination.transferFrom(source, 0, source.size()); } if (source != null) { source.close(); } if (destination != null) { destination.close(); } }