Commit 23e5551d authored by Liang Ding's avatar Liang Ding

🐛 图床上传相同图片后第二幅显示不出来 Fix #101

parent 8c5e81b2
......@@ -17,6 +17,9 @@ import org.apache.commons.lang.time.DateUtils;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.util.ArrayList;
import java.util.List;
......@@ -26,7 +29,7 @@ import java.util.concurrent.ThreadLocalRandom;
* Image utilities.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.1.1.0, Feb 27, 2020
* @version 1.1.2.0, Apr 12, 2020
* @since 2.7.0
*/
public final class Images {
......@@ -44,27 +47,25 @@ public final class Images {
/**
* Qiniu image processing.
*
* @param html the specified content HTML
* @return processed content
* @param doc the specified doc
*/
public static String qiniuImgProcessing(final String html) {
String ret = html;
final String[] imgSrcs = StringUtils.substringsBetween(html, "<img src=\"", "\"");
if (null == imgSrcs) {
return ret;
public static void qiniuImgProcessing(final Document doc) {
final Elements imgs = doc.select("img");
if (imgs.isEmpty()) {
return;
}
for (final String imgSrc : imgSrcs) {
for (final Element img : imgs) {
String imgSrc = img.attr("src");
if (!StringUtils.startsWith(imgSrc, COMMUNITY_FILE_URL) ||
StringUtils.contains(imgSrc, ".gif") || StringUtils.containsIgnoreCase(imgSrc, "imageView") ||
StringUtils.containsIgnoreCase(imgSrc, "data:")) {
continue;
}
ret = StringUtils.replace(ret, imgSrc, imgSrc + "?imageView2/2/w/1280/format/jpg/interlace/1/q/100");
imgSrc += "?imageView2/2/w/1280/format/jpg/interlace/1/q/100";
img.attr("src", imgSrc);
}
return ret;
}
/**
......
......@@ -54,7 +54,7 @@ import java.util.concurrent.*;
* </p>
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 2.3.1.15, Jan 25, 2020
* @version 2.3.1.16, Apr 12, 2020
* @since 0.4.5
*/
public final class Markdowns {
......@@ -225,10 +225,10 @@ public final class Markdowns {
toRemove.forEach(Node::remove);
doc.outputSettings().prettyPrint(false);
Images.qiniuImgProcessing(doc);
String ret = doc.select("body").html();
ret = StringUtils.trim(ret);
ret = Images.qiniuImgProcessing(ret);
// cache it
putHTML(markdownText, ret);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment