2015-01-11 85 views
0

由于现在智能手机将配备16个MP摄像头,并且图像尺寸将达到5 MB。将它们上传到移动数据上需要一些时间和更多的数据,导致App性能不佳。ODK收集图像质量

ODK收集是否有任何方式将图像问题调整为指定的尺寸和质量。

这将有助于提高应用程序的性能。

+0

如果您仍有兴趣这是一个功能,请考虑评论这个建议 - https://github.com/opendatakit/xforms-spec/issues/79 –

回答

0

ImageWidget.java

ODK收集大小调整为屏幕尺寸,但你可以改变

int screenWidth = display.getWidth(); 
int screenHeight = display.getHeight(); 

至AA +固定最大分辨率...

// Only add the imageView if the user has taken a picture 
    if (mBinaryName != null) { 
     mImageView = new ImageView(getContext()); 
     mImageView.setId(QuestionWidget.newUniqueId()); 
     Display display = 
      ((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE)) 
        .getDefaultDisplay(); 
     int screenWidth = display.getWidth(); 
     int screenHeight = display.getHeight(); 

     File f = new File(mInstanceFolder + File.separator + mBinaryName); 

     if (f.exists()) { 
      Bitmap bmp = FileUtils.getBitmapScaledToDisplay(f, screenHeight, screenWidth); 
      if (bmp == null) { 
       mErrorTextView.setVisibility(View.VISIBLE); 
      } 
      mImageView.setImageBitmap(bmp); 
     } else { 
      mImageView.setImageBitmap(null); 
     } 

     mImageView.setPadding(10, 10, 10, 10); 
     mImageView.setAdjustViewBounds(true); 
     mImageView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        Collect.getInstance().getActivityLogger().logInstanceAction(this, "viewButton", 
            "click", mPrompt.getIndex()); 
       Intent i = new Intent("android.intent.action.VIEW"); 
       Uri uri = MediaUtils.getImageUriFromMediaProvider(mInstanceFolder + File.separator + mBinaryName); 
        if (uri != null) { 
        Log.i(t,"setting view path to: " + uri); 
        i.setDataAndType(uri, "image/*"); 
        try { 
         getContext().startActivity(i); 
        } catch (ActivityNotFoundException e) { 
         Toast.makeText(getContext(), 
          getContext().getString(R.string.activity_not_found, "view image"), 
          Toast.LENGTH_SHORT).show(); 
        } 
       } 
      } 
     });