gpt4 book ai didi

java - 如何处理高分辨率图像?

转载 作者:行者123 更新时间:2023-12-02 01:47:42 25 4
gpt4 key购买 nike

我有一个个人资料页面,还有要从服务器下载的个人资料图像,然后放入 ImageView 中。每次我打开个人资料页面时,这个过程都会重复。当图像低于 500 kb 或左右时,一切正常,但当我在其上放置 6mb 图像时,页面工作不顺畅。我的意思是,当滚动或做任何事情时,一切都需要时间。这就像在弱计算机上运行高图形游戏。经过这个过程后,我尝试压缩图像并能够通过这个库将大小减小到 2 MB https://github.com/zetbaitsu/Compressor 。一点也没有少。为什么会出现这个问题。

我正在异步任务上执行此上传过程。

上传方式

public void upload() {
if (filePath != null) {
Bitmap compressedImage = null;
try {
compressedImage = new Compressor(context).compressToBitmap(new File(filePath.getPath()));
} catch (IOException e) {
e.printStackTrace();
try {
compressedImage = MediaStore.Images.Media.getBitmap(context.getContentResolver(), filePath);
} catch (IOException e1) {
e1.printStackTrace();
}
}

ByteArrayOutputStream bytes = new ByteArrayOutputStream();
compressedImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
final String path = MediaStore.Images.Media.insertImage(context.getContentResolver(), compressedImage, "Title", null);

StorageReference sRef = storageReference.child("images/" + name);
sRef.putFile(Uri.parse(path))
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
if (ımageView != null)
ımageView.setImageURI(Uri.parse(filePath.getPath()));
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
Log.i("resultUpload", exception.getLocalizedMessage());
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {

}
});
} else {

}
}

我的下载图片方法

public void download(final ImageView ımageView) {
StorageReference sRef = storageReference.child("images/" + name);
sRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Picasso.get().load(uri).into(ımageView, new Callback() {
@Override
public void onSuccess() {

}

@Override
public void onError(Exception e) {

}
});
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.i("resultDownload", e.getLocalizedMessage());
}
});
}

最佳答案

正如 Milan 所说,您可以做的是从在线 URL 获取图像,然后将该图像设置到您的 imageView 中。首先,您必须确保您拥有互联网权限:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

然后您可以执行以下操作将图像设置到 imageView 中:

Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL("Your image URL comes here".getContent());
imageView.setImageBitmap(bitmap);

这应该通过获取位于您指定的 URL 处的图像的位图来实现。然后它将把 imageView 设置为该位图。

<小时/>

或者,你能做的就是使用毕加索。将其添加到您的 app/build.gradle 中:

implementation 'com.squareup.picasso:picasso:2.5.2'

然后使用此 Java 代码将图像设置到 imageView 中:

String imageUri = "Your image URL";
Picasso.with(getApplicationContext()).load(imageUri).into(imageView);

这使用 Picasso 将图像从 URL 获取到 imageView 中。我希望这有帮助。

关于java - 如何处理高分辨率图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53520918/

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