Merge pull request #1614 from Netrvin/master

Data URI 支持(EPUB)
pull/1617/head
kunfei 3 years ago committed by GitHub
commit a5a6b6f922
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 13
      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.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; 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. * All the resources that make up the book.
@ -314,8 +317,18 @@ public class Resources implements Serializable {
return null; return null;
} }
href = StringUtil.substringBefore(href, Constants.FRAGMENT_SEPARATOR_CHAR); href = StringUtil.substringBefore(href, Constants.FRAGMENT_SEPARATOR_CHAR);
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); return resources.get(href);
} }
}
/** /**
* Gets the first resource (random order) with the give mediatype. * Gets the first resource (random order) with the give mediatype.

Loading…
Cancel
Save