调整图像文件大小将其水平旋转android

时间:2017-01-27 13:50:49

标签: java android bitmap rotation imageview

嘿,我有一个应用程序,从库中选择一个图像,调整大小并将其上传到ftp服务器,但我注意到在某些照片中,应用程序水平翻转图像并向后上传,我可以& #39;弄清楚它为什么会发生(它只发生在一些照片上而不发生在其他照片上,通常发生在从我的相机拍摄的照片上)

以下是调整大小部分的代码:

    @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == Activity.RESULT_OK&&data!=null) {


        selectedImageURI = data.getData();
        showUri = data.getData();
        imagePath = RealPathUtil.getPath(this,data.getData());
        loadedImage.setScaleType(ImageView.ScaleType.CENTER_CROP);
        //loadedImage.setImageURI(data.getData());
            Glide.with(this).load(data.getData())
                    .into((ImageView) findViewById(R.id.upload_image1));

            ImageView m =(ImageView)findViewById(R.id.remove_image);
            m.setFocusable(true);
            m.setVisibility(View.VISIBLE);
            File file = new File(RealPathUtil.getPath(this,data.getData()));

            Bitmap bitmap = decodeFile(file);

            ImageResizer(bitmap);


        }

    }
private Bitmap decodeFile(File f) {
    try {

        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inJustDecodeBounds = true;
        BitmapFactory.decodeStream(new FileInputStream(f),null,o);

        final int REQUIRED_SIZE=200;

        int scale=1;
        while(o.outWidth/scale/2>=REQUIRED_SIZE && o.outHeight/scale/2>=REQUIRED_SIZE)
            scale*=2;

        BitmapFactory.Options o2 = new BitmapFactory.Options();
        o2.inSampleSize=scale;
        Bitmap bit1 = BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
        //Matrix matrix = new Matrix();
        //matrix.postRotate(45);
      //  Bitmap rotatedBitmap = Bitmap.createBitmap(bit1 , 0, 0, bit1 .getWidth(), bit1 .getHeight(), matrix, true);
        return bit1;
    } catch (FileNotFoundException e) {}
    return null;
}

private void ImageResizer(Bitmap bitmap) {
    String root = Environment.getExternalStorageDirectory().toString();
    File myDir = new File(root + "/Pic");
    if(!myDir.exists()) myDir.mkdirs();
    String fname = "resized.png";
    File file = new File (myDir, fname);
    if (file.exists()){
        file.delete();
        Log.d("exist","replace");
        SaveResized(file, bitmap);
    } else {
        SaveResized(file, bitmap);
        Log.d("saved","now");

    }
    selectedImageURI = Uri.fromFile(file);
    imagePath = RealPathUtil.getPath(this,selectedImageURI);
}

private void SaveResized(File file, Bitmap bitmap) {
    try {
        FileOutputStream out = new FileOutputStream(file);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
        out.flush();
        out.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

有人可以帮助我并告诉我它为什么会发生吗?

0 个答案:

没有答案