gpt4 book ai didi

android - 发送到服务器时图像旋转了 90 度

转载 作者:行者123 更新时间:2023-11-30 00:42:11 25 4
gpt4 key购买 nike

我实现了一个捕获图像并将其发送到服务器的功能。

如果我用人像模式拍照然后发送到服务器,照片总是向左旋转90度
但是,如果我在水平模式下重复此操作,一切正常。

所以,我想出了一个主意我把图片变成了位图对象,得到了宽高。我不想做的是在发送到服务器之前将图片旋转 90 度(当我尝试使用纵向模式时)然而,它从来没有奏效(纵向模式的图片在宽度上也有更多的像素......)

谁能给我一些提示??

private void call_camera(){
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, PICK_FROM_CAMERA);
}

这是调用相机功能。

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

if(resultCode != RESULT_OK)
return;

if(requestCode == PICK_FROM_CAMERA){

imageUri = data.getData();
Log.d("메시지", "uri = "+imageUri);


Cursor c = this.getContentResolver().query(imageUri, null, null, null, null);
c.moveToNext();
absolutePath = c.getString(c.getColumnIndex(MediaStore.MediaColumns.DATA));
}
}

我使用 absolutePath 创建了一个 File 对象然后发送到服务器。

fileInputStream = new FileInputStream(file);
int bytesAvailable = fileInputStream.available();
int maxBufferSize = 1024;
int bufferSize = Math.min(bytesAvailable, maxBufferSize);
byte[] buffer = new byte[bufferSize];

int bytesRead = fileInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0) {

DataOutputStream dataWrite = new DataOutputStream(con.getOutputStream());
dataWrite.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}
fileInputStream.close();

wr.writeBytes("\r\n--" + boundary + "--\r\n");
wr.flush();

最佳答案

试试下面的方法

private Bitmap fixOrientation(Bitmap bitmap) {
ExifInterface ei = null;
Bitmap selectedBitmap;
try {
ei = new ExifInterface(mCurrentPhotoPath);
} catch (IOException e) {
e.printStackTrace();
}
int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);

switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
selectedBitmap = rotateImage(bitmap, 90);
break;
case ExifInterface.ORIENTATION_ROTATE_180:
selectedBitmap = rotateImage(bitmap, 180);
break;
case ExifInterface.ORIENTATION_ROTATE_270:
selectedBitmap = rotateImage(bitmap, 270);
break;
case ExifInterface.ORIENTATION_NORMAL:
selectedBitmap = bitmap;
break;
default:
selectedBitmap = bitmap;
}
return selectedBitmap;
}

关于android - 发送到服务器时图像旋转了 90 度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42381891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com