Skip to content

Commit 2355b2a

Browse files
committed
add interpolation config options
1 parent 5494934 commit 2355b2a

File tree

6 files changed

+101
-43
lines changed

6 files changed

+101
-43
lines changed

RealSR-NCNN-Android-GUI/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ android {
99
applicationId "com.tumuyan.ncnn.realsr"
1010
minSdk 24
1111
targetSdk 28
12-
versionCode 37
13-
versionName '1.9.2'
12+
versionCode 38
13+
versionName '1.9.3'
1414

1515
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1616
}

RealSR-NCNN-Android-GUI/app/src/main/java/com/tumuyan/ncnn/realsr/MainActivity.java

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,8 @@ public void onResume() {
339339
List<String> extraCmd = getExtraCommands(
340340
mySharePerferences.getString("extraPath", "").trim()
341341
, mySharePerferences.getString("extraCommand", "").trim()
342+
, mySharePerferences.getString("classicalFilters", getString(R.string.default_classical_filters)).split("\\s+")
343+
, mySharePerferences.getString("magickFilters", getString(R.string.default_magick_filters)).split("\\s+")
342344
);
343345

344346
if (extraCmd.size() > 0) {
@@ -441,17 +443,24 @@ private boolean whiteFileFromUri(Uri uri, String path) {
441443
* @param extraCommand 用户预设命令
442444
* @return 全部扩展命令
443445
*/
444-
private List<String> getExtraCommands(String extraPath, String extraCommand) {
446+
447+
/**
448+
* 生成用户自定义命令. 自定义模型路径的命令与App预设命令有一样的外观和特性
449+
*
450+
* @param extraPath 自定义模型路径
451+
* @param extraCommand 用户预设命令
452+
* @param classicalFilters 经典插值算法列表(resize-ncnn)
453+
* @param magickFilters Magick算法列表
454+
* @return
455+
*/
456+
private List<String> getExtraCommands(String extraPath, String extraCommand, String[] classicalFilters, String[] magickFilters) {
445457

446458
// 解析结果,包含模型目录、用户自定义命令(命令列表)
447459
List<String> cmdList = new ArrayList<>();
448460

449461
// 解析模型目录的结果(下拉列表中的label)
450462
List<String> cmdLabel = new ArrayList<>();
451463

452-
// 增加resize-ncnn经典插值放大的命令
453-
String[] classicalFilters = {"nearest", "bilinear", "bicubic", "avir", "avir-lancir",};
454-
455464
String[] classicalResize = {"2", "4", "10"};
456465

457466
for (String f : classicalFilters) {
@@ -461,21 +470,6 @@ private List<String> getExtraCommands(String extraPath, String extraCommand) {
461470
}
462471
}
463472

464-
// 增加magick插值放大的命令
465-
String[] magickFilters = {
466-
"Hermite",
467-
"Hermite",
468-
"Hamming",
469-
"Lanczos",
470-
"LanczosRadius",
471-
"Lanczos2",
472-
"LanczosSharp",
473-
"Lanczos2Sharp",
474-
"Lagrange",
475-
"Mitchell",
476-
"Blackman",
477-
};
478-
479473
String[] magickResize = {"200%", "400%", "1000%"};
480474

481475
for (String f : magickFilters) {
@@ -485,7 +479,6 @@ private List<String> getExtraCommands(String extraPath, String extraCommand) {
485479
}
486480
}
487481

488-
489482
if (!extraPath.isEmpty()) {
490483
File[] folders = new File(extraPath).listFiles();
491484
if (folders == null)

RealSR-NCNN-Android-GUI/app/src/main/java/com/tumuyan/ncnn/realsr/SettingActivity.java

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class SettingActivity extends AppCompatActivity {
1919
SharedPreferences mySharePerferences;
2020
private int selectCommand;
2121

22-
EditText editDefaultCommand;
22+
EditText editDefaultCommand, editMagickFilters, editClassicalFilters;
2323
EditText editTile;
2424
EditText editThread;
2525
EditText editExtraCommand;
@@ -46,12 +46,14 @@ protected void onCreate(Bundle savedInstanceState) {
4646
mySharePerferences = getSharedPreferences("config", Activity.MODE_PRIVATE);
4747
selectCommand = mySharePerferences.getInt("selectCommand", 0);
4848
int tileSize = mySharePerferences.getInt("tileSize", 0);
49+
String extraCommand = mySharePerferences.getString("extraCommand", "");
4950
String defaultCommand = mySharePerferences.getString("defaultCommand", "");
51+
String classicalFilters = mySharePerferences.getString("classicalFilters", getString(R.string.default_classical_filters));
52+
String magickFilters = mySharePerferences.getString("magickFilters", getString(R.string.default_magick_filters));
5053
String threadCount = mySharePerferences.getString("threadCount", "");
5154
boolean keepScreen = mySharePerferences.getBoolean("keepScreen", false);
52-
boolean useNotification = mySharePerferences.getBoolean("useNotification",false);
55+
boolean useNotification = mySharePerferences.getBoolean("useNotification", false);
5356
boolean prePng = mySharePerferences.getBoolean("PrePng", true);
54-
String extraCommand = mySharePerferences.getString("extraCommand", "");
5557
String extraPath = mySharePerferences.getString("extraPath", "");
5658
String savePath = mySharePerferences.getString("savePath", "");
5759
boolean useCPU = mySharePerferences.getBoolean("useCPU", false);
@@ -61,15 +63,19 @@ protected void onCreate(Bundle savedInstanceState) {
6163
int name = mySharePerferences.getInt("name", 0);
6264
int name2 = mySharePerferences.getInt("name2", 0);
6365
int orientation = mySharePerferences.getInt("ORIENTATION", 0);
64-
int notify = mySharePerferences.getInt("notify", 0);
66+
int notify = mySharePerferences.getInt("notify", 0);
6567

6668
editTile = findViewById(R.id.editTile);
6769
editTile.setText(String.format("%d", tileSize));
68-
editDefaultCommand = findViewById(R.id.editDefaultCommand);
69-
editDefaultCommand.setText(defaultCommand);
7070
editExtraCommand = findViewById(R.id.editExtraCommand);
7171
editExtraCommand.setText(extraCommand);
7272
editExtraCommand.setHint("./waifu2x-ncnn -i input.png -o output.png -m " + galleryPath + "cunet");
73+
editDefaultCommand = findViewById(R.id.editDefaultCommand);
74+
editDefaultCommand.setText(defaultCommand);
75+
editClassicalFilters = findViewById(R.id.editClassicalFilters);
76+
editClassicalFilters.setText(classicalFilters);
77+
editMagickFilters = findViewById(R.id.editMagickFilters);
78+
editMagickFilters.setText(magickFilters);
7379
editExtraPath = findViewById(R.id.editExtraPath);
7480
editExtraPath.setText(extraPath);
7581
editSavePath = findViewById(R.id.editSavePath);
@@ -140,6 +146,8 @@ public void onNothingSelected(AdapterView<?> parent) {
140146
editThread.setText("");
141147
editExtraPath.setText("");
142148
editDefaultCommand.setText("./realsr-ncnn -i input.png -o output.png -m models-Real-ESRGANv3-anime -s 2");
149+
editClassicalFilters.setText(getString(R.string.default_classical_filters));
150+
editMagickFilters.setText(getString(R.string.default_magick_filters));
143151
save();
144152
});
145153

@@ -156,6 +164,8 @@ public void onNothingSelected(AdapterView<?> parent) {
156164
editThread.setText("1:1:1");
157165
editExtraPath.setText("");
158166
editDefaultCommand.setText("");
167+
editClassicalFilters.setText(getString(R.string.default_classical_filters));
168+
editMagickFilters.setText(getString(R.string.default_magick_filters));
159169
save();
160170
});
161171

@@ -187,6 +197,15 @@ private void save() {
187197
editExtraCommand.setText(extraCommand);
188198
editor.putString("extraCommand", extraCommand);
189199

200+
201+
String classicalFilters = editClassicalFilters.getText().toString().trim().replaceAll("\\s+", " ");
202+
editClassicalFilters.setText(classicalFilters);
203+
editor.putString("classicalFilters", classicalFilters);
204+
205+
String magickFilters = editMagickFilters.getText().toString().trim().replaceAll("\\s+", " ");
206+
editMagickFilters.setText(magickFilters);
207+
editor.putString("magickFilters", magickFilters);
208+
190209
String threadCount = editThread.getText().toString().trim().replaceAll("[\\s/]+", ":");
191210
if (threadCount.length() > 0) {
192211
if (!threadCount.matches("(\\d+):(\\d+):(\\d+)")) {
@@ -217,7 +236,7 @@ private void save() {
217236
editor.putInt("name", (int) spinnerName.getSelectedItemId());
218237
editor.putInt("name2", (int) spinnerName2.getSelectedItemId());
219238
editor.putInt("ORIENTATION", (int) spinnerOrientation.getSelectedItemId());
220-
editor.putInt("notify",(int) spinnerNotify.getSelectedItemId());
239+
editor.putInt("notify", (int) spinnerNotify.getSelectedItemId());
221240
editor.apply();
222241
}
223242

RealSR-NCNN-Android-GUI/app/src/main/res/layout/activity_setting.xml

Lines changed: 50 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
3-
xmlns:app="http://schemas.android.com/apk/res-auto"
43
xmlns:tools="http://schemas.android.com/tools"
54
android:layout_width="match_parent"
65
android:layout_height="match_parent"
76
tools:context=".SettingActivity">
87

98
<LinearLayout
109
android:layout_width="match_parent"
11-
android:layout_height="match_parent"
10+
android:layout_height="wrap_content"
1211
android:orientation="vertical"
1312
android:padding="10dp">
1413

@@ -32,8 +31,7 @@
3231
android:layout_height="wrap_content"
3332
android:layout_marginLeft="10dp"
3433
android:layout_marginRight="10dp"
35-
android:padding="5dp"
36-
android:text="ToggleButton" />
34+
android:padding="5dp" />
3735

3836

3937
<TextView
@@ -67,8 +65,7 @@
6765
android:layout_height="wrap_content"
6866
android:layout_marginLeft="10dp"
6967
android:layout_marginRight="10dp"
70-
android:padding="5dp"
71-
android:text="ToggleButton" />
68+
android:padding="5dp" />
7269

7370

7471
<TextView
@@ -84,8 +81,7 @@
8481
android:layout_height="wrap_content"
8582
android:layout_marginLeft="10dp"
8683
android:layout_marginRight="10dp"
87-
android:padding="5dp"
88-
android:text="ToggleButton" />
84+
android:padding="5dp" />
8985

9086
<TextView
9187
android:layout_width="match_parent"
@@ -216,6 +212,50 @@
216212
android:padding="5dp" />
217213
-->
218214

215+
<TextView
216+
android:layout_width="match_parent"
217+
android:layout_height="wrap_content"
218+
android:paddingTop="15dp"
219+
android:text="@string/interpolation"
220+
android:textColor="?attr/colorPrimary"
221+
android:textSize="16sp" />
222+
223+
<TextView
224+
android:layout_width="match_parent"
225+
android:layout_height="wrap_content"
226+
android:layout_marginTop="10dp"
227+
android:text="@string/classical_interpolation"
228+
android:textSize="18sp" />
229+
230+
<EditText
231+
android:id="@+id/editClassicalFilters"
232+
android:layout_width="match_parent"
233+
android:layout_height="wrap_content"
234+
android:background="@drawable/round_corner_bg"
235+
android:ems="10"
236+
android:gravity="start|top"
237+
android:inputType="textMultiLine"
238+
android:hint="@string/default_classical_filters"
239+
android:padding="5dp" />
240+
241+
<TextView
242+
android:layout_width="match_parent"
243+
android:layout_height="wrap_content"
244+
android:layout_marginTop="10dp"
245+
android:text="@string/magick_filters"
246+
android:textSize="18sp" />
247+
248+
<EditText
249+
android:id="@+id/editMagickFilters"
250+
android:layout_width="match_parent"
251+
android:layout_height="wrap_content"
252+
android:background="@drawable/round_corner_bg"
253+
android:ems="10"
254+
android:gravity="start|top"
255+
android:inputType="textMultiLine"
256+
android:hint="@string/default_magick_filters"
257+
android:padding="5dp" />
258+
219259
<TextView
220260
android:layout_width="match_parent"
221261
android:layout_height="wrap_content"
@@ -238,8 +278,7 @@
238278
android:layout_height="wrap_content"
239279
android:layout_marginLeft="10dp"
240280
android:layout_marginRight="10dp"
241-
android:padding="5dp"
242-
android:text="ToggleButton" />
281+
android:padding="5dp" />
243282

244283
<TextView
245284
android:layout_width="match_parent"
@@ -314,8 +353,7 @@
314353
android:layout_height="wrap_content"
315354
android:layout_marginLeft="10dp"
316355
android:layout_marginRight="10dp"
317-
android:padding="5dp"
318-
android:text="ToggleButton" />
356+
android:padding="5dp" />
319357

320358

321359
<TextView

RealSR-NCNN-Android-GUI/app/src/main/res/values-zh/strings.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
<string name="thread_count_err">不符合“数字:数字:数字”的格式</string>
7979
<string name="keep_screen">工作时保持屏幕常亮</string>
8080
<string name="extra_command">在命令列表中添加命令</string>
81-
<string name="partners_for_preset_command">预设命令的附加参数</string>
81+
<string name="partners_for_preset_command">超分辨率算法的附加参数</string>
8282
<string name="custom_command">自定义命令</string>
8383
<string name="use_cpu">尝试使用CPU完成运算(CPU和GPU哪个更稳定是不确定的,但是CPU运算一定更慢)</string>
8484
<string name="save_format">导出时使用的格式</string>
@@ -119,6 +119,9 @@
119119
<string name="cpu_model">处理器</string>
120120
<string name="ram_size">设备运存</string>
121121
<string name="temperature">温度</string>
122+
<string name="magick_filters">Magick内置算法</string>
123+
<string name="classical_interpolation">经典插值算法</string>
124+
<string name="interpolation">插值算法</string>
122125
<!--
123126
<string-array name="style_array">
124127
<item>real-esrgan-4倍动漫模型</item>

RealSR-NCNN-Android-GUI/app/src/main/res/values/strings.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ https://upscale.wiki/wiki/Model_Database There are many models here, download th
6666
<string name="thread_count_err">not number:number:number</string>
6767
<string name="keep_screen">Keep screen on when it works</string>
6868
<string name="extra_command">Extra command in the command list</string>
69-
<string name="partners_for_preset_command">Partners for preset command</string>
69+
<string name="partners_for_preset_command">Partners for preset super-resolution command</string>
7070
<string name="custom_command">Custom command</string>
7171
<string name="use_cpu">Try to use CPU</string>
7272
<string name="save_format">Save format</string>
@@ -108,6 +108,11 @@ https://upscale.wiki/wiki/Model_Database There are many models here, download th
108108
<string name="cpu_model">CPU</string>
109109
<string name="ram_size">RAM</string>
110110
<string name="temperature">Temperature</string>
111+
<string name="magick_filters">Magick filters</string>
112+
<string name="classical_interpolation">Classical interpolation</string>
113+
<string name="interpolation">Interpolation</string>
114+
<string name="default_classical_filters" translatable="false">nearest bilinear bicubic avir avir-lancir</string>
115+
<string name="default_magick_filters" translatable="false">Hermite Hermite Hamming anczos LanczosRadius Lanczos2 LanczosSharp Lanczos2Sharp Lagrange Mitchell Blackman</string>
111116
<string-array name="format">
112117
<item>PNG</item>
113118
<item>WebP</item>

0 commit comments

Comments
 (0)