Преглед изворни кода

Merge pull request #1614 from Netrvin/master

Data URI 支持(EPUB)
kunfei пре 4 година
родитељ
комит
0867f4a82a
1 измењених фајлова са 14 додато и 1 уклоњено
  1. 14 1
      epublib/src/main/java/me/ag2s/epublib/domain/Resources.java

+ 14 - 1
epublib/src/main/java/me/ag2s/epublib/domain/Resources.java

@@ -10,6 +10,9 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import android.util.Base64;
 
 /**
  * All the resources that make up the book.
@@ -314,7 +317,17 @@ public class Resources implements Serializable {
             return null;
         }
         href = StringUtil.substringBefore(href, Constants.FRAGMENT_SEPARATOR_CHAR);
-        return resources.get(href);
+
+        Pattern dataUriRegex = Pattern.compile("data:([\\w/\\-\\.]+);base64,(.*)");
+        Matcher dataUriMatcher = dataUriRegex.matcher(href);
+        if (dataUriMatcher.find()) {
+            String dataUriMediaTypeString = dataUriMatcher.group(1);
+            MediaType dataUriMediaType = new MediaType(dataUriMediaTypeString, "." + StringUtil.substringAfterLast(dataUriMediaTypeString, '/'));
+            byte[] dataUriData = Base64.decode(dataUriMatcher.group(2), Base64.DEFAULT);
+            return new Resource(dataUriData, dataUriMediaType);
+        } else {
+            return resources.get(href);
+        }
     }
 
     /**