当前位置: 首页 > 知识库问答 >
问题:

并非所有设备的图像质量都很好

赫连棋
2023-03-14

我正在尝试通过将图像转换为base 64字符串将图像上传到我的Android应用程序中的服务器。在这种情况下,当我尝试上传图像时,我的图像质量会大大降低并且非常模糊。你能帮我克服这个问题吗?

我要换氧气。inSampleSize=10它在摩托罗拉、三星和联想都能很好地工作,但并非适用于所有设备。请告诉我为什么会这样。。

public Bitmap decodeFile(File f, int sampling) {
    try {
        BitmapFactory.Options o2 = new BitmapFactory.Options();
        o2.inJustDecodeBounds = true;
        BitmapFactory.decodeStream(
                new FileInputStream(f.getAbsolutePath()), null, o2);

        o2.inSampleSize = sampling;      //sampling=10
        o2.inTempStorage = new byte[48 * 1024];

        o2.inJustDecodeBounds = false;
        Bitmap bitmap = BitmapFactory.decodeStream(
                new FileInputStream(f.getAbsolutePath()), null, o2);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
        bitmap = rotateImage(bitmap, f.getAbsolutePath());
        //img = ConvertBitmapToString(bitmap);

        return bitmap;

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (OutOfMemoryError e) {
        e.printStackTrace();
    }
    return null;
}

将位图转换为base64

  ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

  image.compress(Bitmap.CompressFormat.WEBP,100,byteArrayOutputStream);

  String encodeImage = Base64.encodeToString(byteArrayOutputStream.toByteArray(),Base64.DEFAULT);

任何帮助都将不胜感激

共有2个答案

司寇高峯
2023-03-14

不要转换它,上传带有改装的文件,okhttp。为获取POST请求的url创建一个接口

public interface FileUploadService {  
@Multipart
@POST("upload")
Call<ResponseBody> upload(
    @Part("description") RequestBody description,
    @Part MultipartBody.Part file
);}

然后制作一个保存您的文件的Reques Body var和MultiPartBody var来保存文件名

 RequestBody requestFile =
        RequestBody.create(
                     MediaType.parse(getContentResolver().getType(fileUri)),
                     file
         );MultipartBody.Part body =
        MultipartBody.Part.createFormData("picture", file.getName(), requestFile);

以及文件的描述:

RequestBody description =
        RequestBody.create(
                okhttp3.MultipartBody.FORM, "someFile");

然后通过改造上传

Call<ResponseBody> call = service.upload(description, body);
call.enqueue(new Callback<ResponseBody>() {
    @Override
    public void onResponse(Call<ResponseBody> call,
                           Response<ResponseBody> response) {
        Log.v("Upload", "success");
    }

    @Override
    public void onFailure(Call<ResponseBody> call, Throwable t) {
        Log.e("Upload error:", t.getMessage());
    }
});

有关更多信息,请查看此。

东郭腾
2023-03-14

使用Glide准备图像:。asBitmap()。托比特斯()。into()

然后上传。有关更多信息,请查看此链接:https://github.com/bumptech/glide#glide

或此链接:https://github.com/bumptech/glide/issues/1192

 类似资料:
  • 问题内容: 我想我已经尝试了互联网上建议的各种方法,但是没有任何效果。这是我当前的CSS代码: 除了在IE中以外,它都可以正常工作… 问题答案: 不幸的是,在IE中是普通的越野车,至少到8 在Windows Internet Explorer(包括8版及更高版本)中,如果在外部样式表文件中指定了相对URI值,则将基本URI视为包含元素的文档的URI,而不是其中包含样式表的URI。声明出现。 您可能

  • 问题内容: 我正在使用以下方法通过使用jdbc计算工资单,但未删除“ ORA-01008:并非所有变量都绑定”错误。 有什么想法吗? 我正在使用以下代码 问题答案: 您的问题在这里: 您要告诉他们执行SQL ,而不是执行先前准备的SQL。这应该是: 这是一个相当普遍的错误,主要是由于糟糕的class设计 及其子类型引起的。 正如@RMT所指出的,您在这里犯了同样的错误: 没什么关系,因为中没有占位

  • 是否有其他方法启用它?

  • 我有一个全屏PNG我想显示在飞溅。只有一个错误,我不知道每个可提取文件夹(、、和)的大小。我的应用程序应该在所有的手机和平板电脑上运行良好和漂亮。我应该创建多大的尺寸(以像素为单位),以便在所有屏幕上显示好的飞溅?

  • CATALINA_OPTS=“-dcom.sun.management.jmxremote-dcom.sun.management.jmxremote.port=6969-dcom.sun.management.jmxremote.ssl=false-dcom.sun.management.jmxremote.authenticate=false${CATALINA_OPTS}” 并使用jcons

  • 当使用https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html描述的术语搜索时,我没有看到预期的结果 ElasticSearch版本为2.3.2:使用该版本创建数据: 此查询显示两条记录: 这个查询显示了一条记录,正如预期的那样: 但是使用不同的术语将不会产生记录: 不返回记录