切割图像并将其发送到服务器后,图像的质量会不好?

时间:2017-04-19 14:16:11

标签: java android image camera

我不知道,问题是剪切功能还是解码代码? : 我使用代码进行上传:

public void Upload(View view) {
Bitmap Bimg = ((BitmapDrawable) image1.getDrawable()).getBitmap(); 
        ByteArrayOutputStream byteArrayOutputStream = new  ByteArrayOutputStream();
        Bimg.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
          // Bimg.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); // bad too
         encodimg =  Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);

我使用此代码剪切图像:

private void performCrop(){ 
    try {

        Intent cropIntent = new Intent("com.android.camera.action.CROP");

        cropIntent.setDataAndType(picUri, "image/*");

        cropIntent.putExtra("crop", "true");

        cropIntent.putExtra("aspectX", 1);
        cropIntent.putExtra("aspectY", 1);

        cropIntent.putExtra("outputX", 512);
        cropIntent.putExtra("outputY", 512);


        cropIntent.putExtra("return-data", true);

        startActivityForResult(cropIntent, PIC_CROP);
        Toast toast = Toast.makeText(this, "Done", Toast.LENGTH_SHORT);
    }
    catch(ActivityNotFoundException anfe){

        String errorMessage = "Soory - your device doesn't support the crop action!";
        Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
        toast.show();
    }

}

Show the different before between original capture and after cut and upload 备注:我在xml中使用一个小图片作为小预览:

<ImageView
            android:onClick="Load_Picture"
            android:id="@+id/imageview1"
            android:background="@drawable/default_img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

但我没有,xml中的图像大小是问题

从相机或Galerie中获取Bitmap:

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

    if ( requestCode==111 && resultCode==RESULT_OK  ){
        // Uri uri = data.getData();
        // imageView.setImageURI(uri);
        imageView.setImageBitmap((Bitmap)data.getExtras().get("data"));
    }
}

问题是切割方法,因为如果我在切割之前上传位图,我会得到非常好的质量。问题是:

performCrop(){ 

1 个答案:

答案 0 :(得分:0)

您没有尝试将裁剪的图像发送到服务器。

而是在图像视图中显示裁剪的图像。然后,您从该imageview获取一个screendump并将其上传到服务器。当然帽子screendump质量很差。

相反,您应该上传从裁剪功能中获得的图像。

请比较所有相关图像的分辨率。