【问题标题】:Optimizing image size for quality display on image view优化图像尺寸以在图像视图上显示质量
【发布时间】:2016-07-28 11:43:44
【问题描述】:

我想从我的服务器下载图像并将其显示在图像视图上。 我主要关心的是不损害不同设备上的图像质量(具有不同的屏幕尺寸、分辨率和密度)

我想弄清楚如何准确测量我需要多大的图像尺寸以适应图像视图并保持其质量

为了这个问题, 假设我有一个 100dp * 100dp 大小的图像视图,我需要下载什么图像分辨率才能保持 hdpi、xhdpi、xxhdpi 和 xxxhdpi 设备的质量?

我已经知道如何获取设备的分辨率和分辨率

DisplayMetrics displaymetrics = new DisplayMetrics();
    WindowManager  windowManager = (WindowManager) m_context.getSystemService(Context.WINDOW_SERVICE);
    windowManager.getDefaultDisplay().getMetrics(displaymetrics);
    int height = displaymetrics.heightPixels;
    int wwidth = displaymetrics.widthPixels;

    Log.d(Utils.TAG,"displaymetrics : Hieght: "+ height + " width: " + wwidth);


    switch (m_context.getResources().getDisplayMetrics().densityDpi) {
        case DisplayMetrics.DENSITY_LOW:
            Log.d(Utils.TAG,"Low desity");
            break;
        case DisplayMetrics.DENSITY_MEDIUM:
            Log.d(Utils.TAG,"medium desity");
            break;
        case DisplayMetrics.DENSITY_HIGH:
            Log.d(Utils.TAG,"high desity");
            break;
        case DisplayMetrics.DENSITY_XHIGH:
            Log.d(Utils.TAG,"xhigh desity");
            break;
        case DisplayMetrics.DENSITY_XXHIGH:
            Log.d(Utils.TAG,"xxhigh desity");
            break;
        case DisplayMetrics.DENSITY_XXXHIGH:
            Log.d(Utils.TAG,"xxxhigh desity");
            break;
    }

【问题讨论】:

  • 我不确定。但我想我读到 Instagram 使用 1080x1080 的方形图像。在这方面,我不是专家。但我认为,如果专注于图像的大型应用程序使用该分辨率。我应该够了。

标签: android android-layout android-imageview android-screen-support


【解决方案1】:

低密度 (ldpi):75x75

中等密度 (mdpi):100x100,基线

高密度 (hdpi) 150x150

超高密度 (xhdpi) 200x200

额外 x2 高密度 (xxhdpi) 300x300

额外 x3 高密度 (xxxhdpi) 400x400

Range of screens supported | Android Developers

【讨论】:

  • 谢谢!关于图像的一般问题,如果我的服务器上的图像定义为 300*300,我应该检查图像的其他方面吗?类似于 android 中的密度的东西?
  • 并非如此。您可能要考虑的唯一一件事是 JPEG 具有质量因素。品质因数越低,压缩率越高,因此文件大小越小,但图像精度损失也越大。另一方面,PNG 是无损的。
最近更新 更多