package com.test;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
// 目标分辨率
int targetWidth = 640;
int targetHeight = 480;
//String str = "3264x2448,3264x1836,2560x1920,3264x1472,3200x1440,2304x1728,2560x1440,1920x1920,2048x1536,2304x1296,1920x1440,2400x1080,1920x1080";
String str = "2560x1920,3264x1472,3200x1440,2304x1728,2560x1440,1920x1920,2048x1536,2304x1296,1920x1440,2400x1080,2304x1040,1920x1080,1632x1224,1600x1200,1440x1080,1280x960,1088x1088,1600x720,1280x720,960x540,800x600,800x480,720x480,352x288,320x240,176x144";
String[] ary1 = str.split(",");
List<String> list = new ArrayList<String>();
for (int i = 0; i < ary1.length; i++) {
String sss = ary1[i];
list.add(sss);
}
//获取和目标值最接近的一组分辨率
String s = getBestResolution(list,targetWidth,targetHeight);
// 输出最接近目标分辨率的数据
System.out.println("最接近目标分辨率的数据为:"+s);
}
/**
* 获取和目标值最接近的一组分辨率
* @param list 分辨率集合,例如:[960x540,800x600,800x480,720x480,352x288,320x240,176x144]
* @param targetWidth 目标分辨率宽,例如:640
* @param targetHeight 目标分辨率高,例如:480
* @return 和目标值最接近的一组分辨率,例如:720x480
*/
public static String getBestResolution(List<String>list,int targetWidth,int targetHeight) {
// 数据集合
List<Resolution> resolutions = new ArrayList<Resolution>();
for (int i = 0; i < list.size(); i++) {
String sss = list.get(i);
String[] ary2 = sss.split("x");
Resolution resolution = new Resolution(Integer.parseInt(ary2[0]), Integer.parseInt(ary2[1]));
resolutions.add(resolution);
}
// 初始化最小差距为最大值
int minDifference = Integer.MAX_VALUE;
Resolution closestResolution = null;
// 遍历数据集合,找到最接近目标分辨率的数据
for (Resolution resolution : resolutions) {
int difference = Math.abs(resolution.width - targetWidth) + Math.abs(resolution.height - targetHeight);
if (difference < minDifference) {
minDifference = difference;
closestResolution = resolution;
}
}
String res = String.format("%dx%d",closestResolution.width,closestResolution.height);
return res;
}
// 分辨率类
static class Resolution {
int width;
int height;
public Resolution(int width, int height) {
this.width = width;
this.height = height;
}
}
}
输出结果
最接近目标分辨率的数据为:720x480