diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.java b/app/src/main/java/com/hippo/ehviewer/Settings.java
index 7bda03a96..57c09ca8f 100644
--- a/app/src/main/java/com/hippo/ehviewer/Settings.java
+++ b/app/src/main/java/com/hippo/ehviewer/Settings.java
@@ -275,6 +275,13 @@ public class Settings {
}
}
+ public static final String KEY_THUMB_RESOLUTION = "thumb_resolution";
+ private static final int DEFAULT_THUMB_RESOLUTION = 0;
+
+ public static int getThumbResolution() {
+ return getIntFromStr(KEY_THUMB_RESOLUTION, DEFAULT_THUMB_RESOLUTION);
+ }
+
private static final String KEY_SHOW_JPN_TITLE = "show_jpn_title";
private static final boolean DEFAULT_SHOW_JPN_TITLE = false;
diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhUtils.java b/app/src/main/java/com/hippo/ehviewer/client/EhUtils.java
index e367d29f8..2d06243c3 100644
--- a/app/src/main/java/com/hippo/ehviewer/client/EhUtils.java
+++ b/app/src/main/java/com/hippo/ehviewer/client/EhUtils.java
@@ -168,4 +168,31 @@ public class EhUtils {
return title;
}
}
+
+ public static String handleThumbUrlResolution(String url) {
+ if (null == url) {
+ return null;
+ }
+
+ String resolution;
+ switch (Settings.getThumbResolution()) {
+ default:
+ case 0: // Auto
+ return url;
+ case 1: // 250
+ resolution = "250";
+ break;
+ case 2: // 300
+ resolution = "300";
+ break;
+ }
+
+ int index1 = url.lastIndexOf('_');
+ int index2 = url.lastIndexOf('.');
+ if (index1 >= 0 && index2 >= 0 && index1 < index2) {
+ return url.substring(0, index1 + 1) + resolution + url.substring(index2);
+ } else {
+ return url;
+ }
+ }
}
diff --git a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryApiParser.java b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryApiParser.java
index 58182f92d..cd0897233 100644
--- a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryApiParser.java
+++ b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryApiParser.java
@@ -41,7 +41,7 @@ public class GalleryApiParser {
gi.title = ParserUtils.trim(g.getString("title"));
gi.titleJpn = ParserUtils.trim(g.getString("title_jpn"));
gi.category = EhUtils.getCategory(g.getString("category"));
- gi.thumb = g.getString("thumb");
+ gi.thumb = EhUtils.handleThumbUrlResolution(g.getString("thumb"));
gi.uploader = g.getString("uploader");
gi.posted = ParserUtils.formatDate(ParserUtils.parseLong(g.getString("posted")) * 1000);
gi.rating = Float.parseFloat(g.getString("rating"));
diff --git a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryDetailParser.java b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryDetailParser.java
index 74408b12a..8a9060e05 100644
--- a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryDetailParser.java
+++ b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryDetailParser.java
@@ -130,7 +130,7 @@ public class GalleryDetailParser {
// Thumb url
Element gd1 = gm.getElementById("gd1");
try {
- gd.thumb = StringUtils.trim(gd1.child(0).attr("src"));
+ gd.thumb = EhUtils.handleThumbUrlResolution(StringUtils.trim(gd1.child(0).attr("src")));
} catch (Exception e) {
gd.thumb = "";
}
diff --git a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryListParser.java b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryListParser.java
index 9d104fd8c..a1e257828 100644
--- a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryListParser.java
+++ b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryListParser.java
@@ -121,13 +121,14 @@ public class GalleryListParser {
// Thumb url
Elements es = it2.children();
if (null != es && es.size() >= 1) {
- gi.thumb = es.get(0).attr("src");
+ gi.thumb = EhUtils.handleThumbUrlResolution(es.get(0).attr("src"));
} else {
String html = it2.html();
int index1 = html.indexOf('~');
int index2 = StringUtils.ordinalIndexOf(html, '~', 2);
if (index1 < index2) {
- gi.thumb = "http://" +StringUtils.replace(html.substring(index1 + 1, index2), "~", "/");
+ gi.thumb = EhUtils.handleThumbUrlResolution(
+ "http://" +StringUtils.replace(html.substring(index1 + 1, index2), "~", "/"));
} else {
Log.w(TAG, "Can't parse gallery info thumb url");
gi.thumb = "";
diff --git a/app/src/main/java/com/hippo/ehviewer/client/parser/WhatsHotParser.java b/app/src/main/java/com/hippo/ehviewer/client/parser/WhatsHotParser.java
index 2ae0b0a95..2289053d0 100644
--- a/app/src/main/java/com/hippo/ehviewer/client/parser/WhatsHotParser.java
+++ b/app/src/main/java/com/hippo/ehviewer/client/parser/WhatsHotParser.java
@@ -16,6 +16,7 @@
package com.hippo.ehviewer.client.parser;
+import com.hippo.ehviewer.client.EhUtils;
import com.hippo.ehviewer.client.data.GalleryInfo;
import com.hippo.ehviewer.client.exception.ParseException;
import com.hippo.util.JsoupUtils;
@@ -47,7 +48,7 @@ public class WhatsHotParser {
galleryInfo.gid = result.gid;
galleryInfo.token = result.token;
temp = JsoupUtils.getElementByTag(temp, "img");
- galleryInfo.thumb = temp.attr("src");
+ galleryInfo.thumb = EhUtils.handleThumbUrlResolution(temp.attr("src"));
galleryInfo.title = temp.attr("title");
galleryInfo.generateSLang();
galleryInfoList.add(galleryInfo);
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 27795b15a..bb3413dac 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -365,6 +365,9 @@
大
中
小
+ 缩略图分辨率
+ %s,指定分辨率可能使获取缩略图失败
+ 自动
主页分类显示
默认在主页所显示的分类
排除标签组
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index 7cd875be6..feae0d320 100644
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -365,6 +365,9 @@
大
中
小
+ 縮略圖分辨率
+ %s,指定分辨率可能使獲取縮略圖失敗
+ 自動
主頁分類顯示
默認在主頁所顯示的分類
排除標籤組
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index f8571ebd4..658835c4d 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -365,6 +365,9 @@
大
中
小
+ 縮圖解析度
+ %s,指定解析度可能使獲取縮圖失敗
+ 自動
主頁分類顯示
預設在主頁所顯示的分類
排除標籤組
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index d3a33ab91..cdbf28c5d 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -43,6 +43,18 @@
- @string/settings_eh_thumb_size_small
+
+ - @string/settings_eh_thumb_resolution_auto
+ - 250x
+ - 300x
+
+
+
+ - 0
+ - 1
+ - 2
+
+
- 0
- 1
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 49b1c1e34..bd2059ac8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -407,6 +407,9 @@
Large
Middle
Small
+ Thumb resolution
+ %s, special resolutions might cause getting thumb failed
+ Auto
Categories on Homepage
The categories shown as default on Homepage
Excluded languages
diff --git a/app/src/main/res/xml/eh_settings.xml b/app/src/main/res/xml/eh_settings.xml
index 311ec35ca..a5fd2c4ac 100644
--- a/app/src/main/res/xml/eh_settings.xml
+++ b/app/src/main/res/xml/eh_settings.xml
@@ -48,6 +48,14 @@
app:entryValues="@array/thumb_size_entry_values"
android:defaultValue="1"/>
+
+