通过意图发送图片并显示为PDF

时间:2018-02-18 03:14:51

标签: java android

我有三项活动

  1. 爱好
  2. 语言
  3. 添加照片
  4. 我的目标是什么:我获得了爱好和语言活动的价值,还有照片并将其发送到其他活动,并凭借这些知识创建PDF文件

    问题,因为我有3个活动,如果用户首先进入Hobby活动并填写字段然后转到语言活动并填写所有字段,最后用户转到照片活动并获取来自手机媒体的照片,然后通过这种方式创建PDF文件我获取数据以及PDF格式的图片。这里我的代码完美用户选择照片在其他活动中填充数据后结束出现问题当他首先选择图像然后填充数据并创建PDF时会发生什么事情我只能在我的PDF中获取数据没有图片的迹象!!

    我想把所有的代码都放在那里,但代码太多了

    发送图片

      private void getting_data_from_fields_and_sending_on_click_listner() {
    
        Intent i = new Intent (Add_Picture_Activity.this , Selecting_Activity.class) ;
    
        ByteArrayOutputStream b = new ByteArrayOutputStream() ;
        resultBmp.compress(Bitmap.CompressFormat.JPEG , 100 , b);
        byte[] bytes = b.toByteArray();
    
    
        i.putExtra("UserImage" , bytes);
    
    
        startActivity(i);
    
    }
    

    接收图片

      public void gettingInfoFromTheAddPictureActivity() {
    
            bitmap = (Bitmap) getIntent().getParcelableExtra("UserImage");
            byte [] bytes = getIntent().getByteArrayExtra("UserImage");
            bitmap = BitmapFactory.decodeByteArray(bytes , 0  , bytes.length);
    
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG , 100 , stream);
    
    
            userImage  = null ;
            try {
    
                userImage = Image.getInstance(stream.toByteArray());
            }catch (Exception c){
    
            }
        }
    
    
    
      try {
                gettingInfoFromTheAddPictureActivity();
                userImage.scaleToFit(80 , 80);
                userImage.setAbsolutePosition(0,0) ;
                p.getDirectContent();
                document.add(userImage);
            }catch (Exception x){
            }
    

1 个答案:

答案 0 :(得分:0)

一些我如何解决问题 首先,我获取用户所选图像的路径并将其存储在pref中,然后使用该路径在其他活动中创建位图,然后使用位图将图像加载到PDF文件中。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);


if (resultCode == RESULT_OK){

            Uri imageUri = data.getData( );
            picturePath = getPath( Add_Picture_Activity.this, imageUri );
            Log.d("Picture Path", picturePath);
}else{
    Toast.makeText(this, "You have not select image", Toast.LENGTH_SHORT).show();
}
    }

 public static String getPath(Context context, Uri uri ) {
        String result = null;
        String[] proj = { MediaStore.Images.Media.DATA };
        Cursor cursor = context.getContentResolver( ).query( uri, proj, null, null, null );
        if(cursor != null){
            if ( cursor.moveToFirst( ) ) {
                int column_index = cursor.getColumnIndexOrThrow( proj[0] );
                result = cursor.getString( column_index );
            }
            cursor.close( );
        }
        if(result == null) {
            result = "Not found";
        }
        return result;
    }
    private void getting_data_from_fields_and_sending_on_click_listner() {

        Intent sendingPicPath = new Intent (Add_Picture_Activity.this , Selecting_Activity.class);
       editor = pref.edit() ;
        editor.putString("IMAGEPATH" , picturePath);
        editor.apply();
        startActivity(sendingPicPath);

    }

关于其他活动

    String imagePath = user_image.getString("IMAGEPATH" ,"");


    Bitmap bitmap = BitmapFactory.decodeFile(imagePath);