provide boolean isImageInlining and inlineImagePatterns to LinkParsingOperations#isImageLink(..)

in order to break a package cycle between o.a.w.render and o.a.w.parser
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/parser/JSPWikiMarkupParser.java b/jspwiki-main/src/main/java/org/apache/wiki/parser/JSPWikiMarkupParser.java
index 23eee96..e2a18cc 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/parser/JSPWikiMarkupParser.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/parser/JSPWikiMarkupParser.java
@@ -958,32 +958,26 @@
      * @param url
      * @return An anchor Element containing the link.
      */
-    private Element makeDirectURILink( String url )
-    {
+    private Element makeDirectURILink( String url ) {
         final Element result;
         String last = null;
 
-        if( url.endsWith(",") || url.endsWith(".") )
-        {
-            last = url.substring( url.length()-1 );
-            url  = url.substring( 0, url.length()-1 );
+        if( url.endsWith( "," ) || url.endsWith( "." ) ) {
+            last = url.substring( url.length() - 1 );
+            url = url.substring( 0, url.length() - 1 );
         }
 
         callMutatorChain( m_externalLinkMutatorChain, url );
 
-        if( m_linkParsingOperations.isImageLink( url ) )
-        {
-            result = handleImageLink( StringUtils.replace(url,"&","&"), url, false );
-        }
-        else
-        {
-            result = makeLink( EXTERNAL, StringUtils.replace(url,"&","&"), url, null, null );
+        if( m_linkParsingOperations.isImageLink( url, isImageInlining(), getInlineImagePatterns() ) ) {
+            result = handleImageLink( StringUtils.replace( url, "&", "&" ), url, false );
+        } else {
+            result = makeLink( EXTERNAL, StringUtils.replace( url, "&", "&" ), url, null, null );
             addElement( outlinkImage() );
         }
 
-        if( last != null )
-        {
-            m_plainTextBuf.append(last);
+        if( last != null ) {
+            m_plainTextBuf.append( last );
         }
 
         return result;
@@ -1101,9 +1095,8 @@
      *  very useful if you want to emit HTML directly into the stream.
      *
      */
-    private void disableOutputEscaping()
-    {
-        addElement( new ProcessingInstruction(Result.PI_DISABLE_OUTPUT_ESCAPING, "") );
+    private void disableOutputEscaping() {
+        addElement( new ProcessingInstruction( Result.PI_DISABLE_OUTPUT_ESCAPING, "" ) );
     }
 
     /**
@@ -1111,7 +1104,7 @@
      */
     private Element handleHyperlinks( String linktext, final int pos ) {
         final ResourceBundle rb = Preferences.getBundle( m_context, InternationalizationManager.CORE_BUNDLE );
-        final StringBuilder sb = new StringBuilder(linktext.length()+80);
+        final StringBuilder sb = new StringBuilder( linktext.length() + 80 );
 
         if( m_linkParsingOperations.isAccessRule( linktext ) ) {
             return handleAccessRule( linktext );
@@ -1121,28 +1114,19 @@
             return handleMetadata( linktext );
         }
 
-        if( m_linkParsingOperations.isPluginLink( linktext ) )
-        {
-            try
-            {
+        if( m_linkParsingOperations.isPluginLink( linktext ) ) {
+            try {
                 final PluginContent pluginContent = PluginContent.parsePluginLine( m_context, linktext, pos );
-                //
-                //  This might sometimes fail, especially if there is something which looks
-                //  like a plugin invocation but is really not.
-                //
-                if( pluginContent != null )
-                {
-                    addElement( pluginContent );
 
+                // This might sometimes fail, especially if there is something which looks like a plugin invocation but is really not.
+                if( pluginContent != null ) {
+                    addElement( pluginContent );
                     pluginContent.executeParse( m_context );
                 }
-            }
-            catch( final PluginException e )
-            {
+            } catch( final PluginException e ) {
                 log.info( m_context.getRealPage().getWiki() + " : " + m_context.getRealPage().getName() + " - Failed to insert plugin: " + e.getMessage() );
                 //log.info( "Root cause:",e.getRootThrowable() );
-                if( !m_wysiwygEditorMode )
-                {
+                if( !m_wysiwygEditorMode ) {
                     final ResourceBundle rbPlugin = Preferences.getBundle( m_context, WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE );
                     return addElement( makeError( MessageFormat.format( rbPlugin.getString( "plugin.error.insertionfailed" ),
                     		                                            m_context.getRealPage().getWiki(),
@@ -1154,10 +1138,9 @@
             return m_currentElement;
         }
 
-        try
-        {
-            final LinkParser.Link link = m_linkParser.parse(linktext);
-            linktext       = link.getText();
+        try {
+            final LinkParser.Link link = m_linkParser.parse( linktext );
+            linktext = link.getText();
             String linkref = link.getReference();
 
             //
@@ -1167,33 +1150,23 @@
             //
             //  In many cases these are the same.  [linktext|linkref].
             //
-            if( m_linkParsingOperations.isVariableLink( linktext ) )
-            {
-                final Content el = new VariableContent(linktext);
+            if( m_linkParsingOperations.isVariableLink( linktext ) ) {
+                final Content el = new VariableContent( linktext );
 
                 addElement( el );
-            }
-            else if( m_linkParsingOperations.isExternalLink( linkref ) )
-            {
+            } else if( m_linkParsingOperations.isExternalLink( linkref ) ) {
                 // It's an external link, out of this Wiki
 
                 callMutatorChain( m_externalLinkMutatorChain, linkref );
 
-                if( m_linkParsingOperations.isImageLink( linkref ) )
-                {
+                if( m_linkParsingOperations.isImageLink( linkref, isImageInlining(), getInlineImagePatterns() ) ) {
                     handleImageLink( linkref, linktext, link.hasReference() );
-                }
-                else
-                {
+                } else {
                     makeLink( EXTERNAL, linkref, linktext, null, link.getAttributes() );
                     addElement( outlinkImage() );
                 }
-            }
-            else if( link.isInterwikiLink() )
-            {
-                // It's an interwiki link
-                // InterWiki links also get added to external link chain
-                // after the links have been resolved.
+            } else if( link.isInterwikiLink() ) {
+                // It's an interwiki link; InterWiki links also get added to external link chain after the links have been resolved.
 
                 // FIXME: There is an interesting issue here:  We probably should
                 //        URLEncode the wikiPage, but we can't since some of the
@@ -1202,81 +1175,57 @@
                 //        is using, so you'll have to write the entire name as it appears
                 //        in the URL.  Bugger.
 
-                final String extWiki  = link.getExternalWiki();
+                final String extWiki = link.getExternalWiki();
                 final String wikiPage = link.getExternalWikiPage();
 
-                if( m_wysiwygEditorMode )
-                {
+                if( m_wysiwygEditorMode ) {
                     makeLink( INTERWIKI, extWiki + ":" + wikiPage, linktext, null, link.getAttributes() );
-                }
-                else
-                {
+                } else {
                     String urlReference = m_engine.getInterWikiURL( extWiki );
 
-                    if( urlReference != null )
-                    {
+                    if( urlReference != null ) {
                         urlReference = TextUtil.replaceString( urlReference, "%s", wikiPage );
                         urlReference = callMutatorChain( m_externalLinkMutatorChain, urlReference );
 
-                        if( m_linkParsingOperations.isImageLink(urlReference) )
-                        {
+                        if( m_linkParsingOperations.isImageLink( urlReference, isImageInlining(), getInlineImagePatterns() ) ) {
                             handleImageLink( urlReference, linktext, link.hasReference() );
-                        }
-                        else
-                        {
+                        } else {
                             makeLink( INTERWIKI, urlReference, linktext, null, link.getAttributes() );
                         }
 
-                        if( m_linkParsingOperations.isExternalLink(urlReference) )
-                        {
+                        if( m_linkParsingOperations.isExternalLink( urlReference ) ) {
                             addElement( outlinkImage() );
                         }
-                    }
-                    else
-                    {
-                        final Object[] args = { escapeHTMLEntities(extWiki) };
+                    } else {
+                        final Object[] args = { escapeHTMLEntities( extWiki ) };
 
                         addElement( makeError( MessageFormat.format( rb.getString( "markupparser.error.nointerwikiref" ), args ) ) );
                     }
                 }
-            }
-            else if( linkref.startsWith("#") )
-            {
+            } else if( linkref.startsWith( "#" ) ) {
                 // It defines a local footnote
                 makeLink( LOCAL, linkref, linktext, null, link.getAttributes() );
-            }
-            else if( TextUtil.isNumber( linkref ) )
-            {
+            } else if( TextUtil.isNumber( linkref ) ) {
                 // It defines a reference to a local footnote
                 makeLink( LOCALREF, linkref, linktext, null, link.getAttributes() );
-            }
-            else
-            {
-                int hashMark = -1;
+            } else {
+                final int hashMark;
 
-                //
-                //  Internal wiki link, but is it an attachment link?
-                //
+                // Internal wiki link, but is it an attachment link?
                 String attachment = m_engine.getManager( AttachmentManager.class ).getAttachmentInfoName( m_context, linkref );
-                if( attachment != null )
-                {
+                if( attachment != null ) {
                     callMutatorChain( m_attachmentLinkMutatorChain, attachment );
 
-                    if( m_linkParsingOperations.isImageLink( linkref ) )
-                    {
+                    if( m_linkParsingOperations.isImageLink( linkref, isImageInlining(), getInlineImagePatterns() ) ) {
                         attachment = m_context.getURL( WikiContext.ATTACH, attachment );
                         sb.append( handleImageLink( attachment, linktext, link.hasReference() ) );
-                    }
-                    else
-                    {
+                    } else {
                         makeLink( ATTACHMENT, attachment, linktext, null, link.getAttributes() );
                     }
-                }
-                else if( (hashMark = linkref.indexOf('#')) != -1 )
-                {
+                } else if( ( hashMark = linkref.indexOf( '#' ) ) != -1 ) {
                     // It's an internal Wiki link, but to a named section
 
-                    final String namedSection = linkref.substring( hashMark+1 );
+                    final String namedSection = linkref.substring( hashMark + 1 );
                     linkref = linkref.substring( 0, hashMark );
 
                     linkref = MarkupParser.cleanLink( linkref );
@@ -1285,15 +1234,13 @@
 
                     final String matchedLink = m_linkParsingOperations.linkIfExists( linkref );
                     if( matchedLink != null ) {
-                        String sectref = "section-"+m_engine.encodeName(matchedLink+"-"+wikifyLink(namedSection));
-                        sectref = sectref.replace('%', '_');
+                        String sectref = "section-" + m_engine.encodeName( matchedLink + "-" + wikifyLink( namedSection ) );
+                        sectref = sectref.replace( '%', '_' );
                         makeLink( READ, matchedLink, linktext, sectref, link.getAttributes() );
                     } else {
                         makeLink( EDIT, linkref, linktext, null, link.getAttributes() );
                     }
-                }
-                else
-                {
+                } else {
                     // It's an internal Wiki link
                     linkref = MarkupParser.cleanLink( linkref );
 
@@ -1307,14 +1254,12 @@
                     }
                 }
             }
-        }
-        catch( final ParseException e )
-        {
-            log.info("Parser failure: ",e);
-            final Object[] args = { e.getMessage() };
-            addElement( makeError( MessageFormat.format( rb.getString( "markupparser.error.parserfailure" ), args ) ) );
-        }
 
+    } catch( final ParseException e ) {
+        log.info( "Parser failure: ", e );
+        final Object[] args = { e.getMessage() };
+        addElement( makeError( MessageFormat.format( rb.getString( "markupparser.error.parserfailure" ), args ) ) );
+    }
         return m_currentElement;
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/parser/LinkParsingOperations.java b/jspwiki-main/src/main/java/org/apache/wiki/parser/LinkParsingOperations.java
index 8102e73..51263ef 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/parser/LinkParsingOperations.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/parser/LinkParsingOperations.java
@@ -23,7 +23,6 @@
 import org.apache.oro.text.regex.Perl5Matcher;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.exceptions.ProviderException;
-import org.apache.wiki.render.RenderingManager;
 
 import java.util.Arrays;
 import java.util.Comparator;
@@ -41,13 +40,11 @@
     private final WikiContext wikiContext;
 
     /**
-     *  This list contains all IANA registered URI protocol
-     *  types as of September 2004 + a few well-known extra types.
+     *  This list contains all IANA registered URI protocol types as of September 2004 + a few well-known extra types.
      *
      *  JSPWiki recognises all of them as external links.
      *
-     *  This array is sorted during class load, so you can just dump
-     *  here whatever you want in whatever order you want.
+     *  This array is sorted during class load, so you can just dump here whatever you want in whatever order you want.
      */
     static final String[] EXTERNAL_LINKS = {
         "http:", "ftp:", "https:", "mailto:",
@@ -83,8 +80,7 @@
     /**
      *  Returns true if the link is really command to insert a plugin.
      *  <P>
-     *  Currently we just check if the link starts with "{INSERT",
-     *  or just plain "{" but not "{$".
+     *  Currently we just check if the link starts with "{INSERT", or just plain "{" but not "{$".
      *
      *  @param link Link text, i.e. the contents of text between [].
      *  @return True, if this link seems to be a command to insert a plugin here.
@@ -135,8 +131,7 @@
     }
 
     /**
-     * Figures out if a link is an off-site link.  This recognizes
-     * the most common protocols by checking how it starts.
+     * Figures out if a link is an off-site link.  This recognizes the most common protocols by checking how it starts.
      *
      * @param page The link to check.
      * @return true, if this is a link outside of this wiki.
@@ -149,15 +144,11 @@
     }
 
     /**
-     *  Matches the given link to the list of image name patterns to
-     *  determine whether it should be treated as an inline image or not.
+     *  Matches the given link to the list of image name patterns to determine whether it should be treated as an inline image or not.
      */
-    public boolean isImageLink( String link ) {
-        if( wikiContext.getEngine().getManager( RenderingManager.class ).getParser( wikiContext, link ).isImageInlining() ) {
+    public boolean isImageLink( String link, final boolean isImageInlining, final List< Pattern > inlineImagePatterns ) {
+        if( isImageInlining ) {
             link = link.toLowerCase();
-            final List< Pattern > inlineImagePatterns = wikiContext.getEngine().getManager( RenderingManager.class )
-            	                                                   .getParser( wikiContext, link ).getInlineImagePatterns();
-
             for( final Pattern p : inlineImagePatterns ) {
                 if( new Perl5Matcher().matches( link, p ) ) {
                     return true;
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/MarkdownForJSPWikiExtension.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/MarkdownForJSPWikiExtension.java
index b7cec13..cc93a62 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/MarkdownForJSPWikiExtension.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/MarkdownForJSPWikiExtension.java
@@ -21,11 +21,14 @@
 import com.vladsch.flexmark.html.HtmlRenderer;
 import com.vladsch.flexmark.parser.Parser;
 import com.vladsch.flexmark.util.data.MutableDataHolder;
+import org.apache.oro.text.regex.Pattern;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.markdown.extensions.jspwikilinks.attributeprovider.JSPWikiLinkAttributeProviderFactory;
 import org.apache.wiki.markdown.extensions.jspwikilinks.postprocessor.JSPWikiNodePostProcessorFactory;
 import org.apache.wiki.markdown.renderer.JSPWikiNodeRendererFactory;
 
+import java.util.List;
+
 
 /**
  * Flexmark entry point to bootstrap JSPWiki extensions.
@@ -33,9 +36,15 @@
 public class MarkdownForJSPWikiExtension implements Parser.ParserExtension, HtmlRenderer.HtmlRendererExtension {
 
 	private final WikiContext context;
+	private final boolean isImageInlining;
+	private final List< Pattern > inlineImagePatterns;
 
-	public MarkdownForJSPWikiExtension( final WikiContext context ) {
+	public MarkdownForJSPWikiExtension( final WikiContext context,
+										final boolean isImageInlining,
+										final List< Pattern > inlineImagePatterns ) {
 		this.context = context;
+		this.isImageInlining = isImageInlining;
+		this.inlineImagePatterns = inlineImagePatterns;
 	}
 
 	/**
@@ -58,7 +67,7 @@
 	@Override
 	public void extend( final HtmlRenderer.Builder rendererBuilder, final String rendererType ) {
 	    rendererBuilder.nodeRendererFactory( new JSPWikiNodeRendererFactory( context ) );
-        rendererBuilder.attributeProviderFactory( new JSPWikiLinkAttributeProviderFactory( context ) );
+        rendererBuilder.attributeProviderFactory( new JSPWikiLinkAttributeProviderFactory( context, isImageInlining, inlineImagePatterns ) );
 	}
 
     /**
@@ -66,7 +75,7 @@
 	 */
 	@Override
 	public void extend( final Parser.Builder parserBuilder ) {
-	    parserBuilder.postProcessorFactory( new JSPWikiNodePostProcessorFactory( context, parserBuilder ) );
+	    parserBuilder.postProcessorFactory( new JSPWikiNodePostProcessorFactory( context, parserBuilder, isImageInlining, inlineImagePatterns ) );
 	}
 
 }
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/ExternalLinkAttributeProviderState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/ExternalLinkAttributeProviderState.java
index 9add6de..76dc98e 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/ExternalLinkAttributeProviderState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/ExternalLinkAttributeProviderState.java
@@ -19,12 +19,14 @@
 package org.apache.wiki.markdown.extensions.jspwikilinks.attributeprovider;
 
 import com.vladsch.flexmark.util.ast.Node;
+import com.vladsch.flexmark.util.html.Attributes;
+import org.apache.oro.text.regex.Pattern;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.parser.LinkParsingOperations;
 import org.apache.wiki.parser.MarkupParser;
 
-import com.vladsch.flexmark.util.html.Attributes;
+import java.util.List;
 
 
 /**
@@ -36,11 +38,18 @@
     private final boolean m_useRelNofollow;
     private final WikiContext wikiContext;
     private final LinkParsingOperations linkOperations;
+    private final boolean isImageInlining;
+    private final List< Pattern > inlineImagePatterns;
 
-    public ExternalLinkAttributeProviderState( final WikiContext wikiContext, final boolean hasRef ) {
+    public ExternalLinkAttributeProviderState( final WikiContext wikiContext,
+                                               final boolean hasRef,
+                                               final boolean isImageInlining,
+                                               final List< Pattern > inlineImagePatterns ) {
         this.hasRef = hasRef;
         this.wikiContext = wikiContext;
         this.linkOperations = new LinkParsingOperations( wikiContext );
+        this.isImageInlining = isImageInlining;
+        this.inlineImagePatterns = inlineImagePatterns;
         this.m_useRelNofollow = wikiContext.getBooleanWikiProperty( MarkupParser.PROP_USERELNOFOLLOW, false );
     }
 
@@ -51,7 +60,7 @@
      */
     @Override
     public void setAttributes( final Attributes attributes, final JSPWikiLink link ) {
-        if( linkOperations.isImageLink( link.getUrl().toString() ) ) {
+        if( linkOperations.isImageLink( link.getUrl().toString(), isImageInlining, inlineImagePatterns ) ) {
             new ImageLinkAttributeProviderState( wikiContext, link.getText().toString(), hasRef ).setAttributes( attributes, link );
         } else {
             attributes.replaceValue( "class", MarkupParser.CLASS_EXTERNAL );
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/InterWikiLinkAttributeProviderState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/InterWikiLinkAttributeProviderState.java
index 4de92d6..7138720 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/InterWikiLinkAttributeProviderState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/InterWikiLinkAttributeProviderState.java
@@ -21,12 +21,15 @@
 import com.vladsch.flexmark.ast.Link;
 import com.vladsch.flexmark.util.ast.Node;
 import com.vladsch.flexmark.util.html.Attributes;
+import org.apache.oro.text.regex.Pattern;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.parser.LinkParsingOperations;
 import org.apache.wiki.parser.MarkupParser;
 import org.apache.wiki.util.TextUtil;
 
+import java.util.List;
+
 
 /**
  * {@link NodeAttributeProviderState} which sets the attributes for interwiki links.
@@ -37,11 +40,18 @@
     private final boolean m_wysiwygEditorMode;
     private final WikiContext wikiContext;
     private final LinkParsingOperations linkOperations;
+    private final boolean isImageInlining;
+    private final List< Pattern > inlineImagePatterns;
 
-    public InterWikiLinkAttributeProviderState( final WikiContext wikiContext, final boolean hasRef ) {
+    public InterWikiLinkAttributeProviderState( final WikiContext wikiContext,
+                                                final boolean hasRef,
+                                                final boolean isImageInlining,
+                                                final List< Pattern > inlineImagePatterns ) {
         this.hasRef = hasRef;
         this.wikiContext = wikiContext;
         this.linkOperations = new LinkParsingOperations( wikiContext );
+        this.isImageInlining = isImageInlining;
+        this.inlineImagePatterns = inlineImagePatterns;
         final Boolean wysiwygVariable = ( Boolean )wikiContext.getVariable( WikiContext.VAR_WYSIWYG_EDITOR_MODE );
         m_wysiwygEditorMode = wysiwygVariable != null ? wysiwygVariable : false;
     }
@@ -58,7 +68,7 @@
             String urlReference = wikiContext.getEngine().getInterWikiURL( refAndPage[ 0 ] );
             if( urlReference != null ) {
                 urlReference = TextUtil.replaceString( urlReference, "%s", refAndPage[ 1 ] );
-                if( linkOperations.isImageLink( urlReference ) ) {
+                if( linkOperations.isImageLink( urlReference, isImageInlining, inlineImagePatterns ) ) {
                     new ImageLinkAttributeProviderState( wikiContext, urlReference, hasRef ).setAttributes( attributes, link );
                 } else {
                     setInterWikiLinkAttrs( attributes, link, urlReference );
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProvider.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProvider.java
index 45a91a3..4d8ba7e 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProvider.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProvider.java
@@ -18,16 +18,18 @@
  */
 package org.apache.wiki.markdown.extensions.jspwikilinks.attributeprovider;
 
+import com.vladsch.flexmark.html.AttributeProvider;
+import com.vladsch.flexmark.html.renderer.AttributablePart;
+import com.vladsch.flexmark.util.ast.Node;
+import com.vladsch.flexmark.util.html.Attributes;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.oro.text.regex.Pattern;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.parser.LinkParsingOperations;
 import org.apache.wiki.util.TextUtil;
 
-import com.vladsch.flexmark.html.AttributeProvider;
-import com.vladsch.flexmark.html.renderer.AttributablePart;
-import com.vladsch.flexmark.util.ast.Node;
-import com.vladsch.flexmark.util.html.Attributes;
+import java.util.List;
 
 
 /**
@@ -39,10 +41,16 @@
 
     protected final WikiContext wikiContext;
     protected final LinkParsingOperations linkOperations;
+    private final boolean isImageInlining;
+    private final List< Pattern > inlineImagePatterns;
 
-    public JSPWikiLinkAttributeProvider( final WikiContext wikiContext ) {
+    public JSPWikiLinkAttributeProvider( final WikiContext wikiContext,
+                                         final boolean isImageInlining,
+                                         final List< Pattern > inlineImagePatterns ) {
         this.wikiContext = wikiContext;
         this.linkOperations = new LinkParsingOperations( wikiContext );
+        this.isImageInlining = isImageInlining;
+        this.inlineImagePatterns = inlineImagePatterns;
     }
 
     /**
@@ -56,15 +64,15 @@
             final JSPWikiLink link = ( JSPWikiLink )node;
             final NodeAttributeProviderState< JSPWikiLink > linkState;
             if( linkOperations.isExternalLink( link.getWikiLink() ) ) {
-                linkState = new ExternalLinkAttributeProviderState( wikiContext, link.hasRef() );
+                linkState = new ExternalLinkAttributeProviderState( wikiContext, link.hasRef(), isImageInlining, inlineImagePatterns );
             } else if( linkOperations.isInterWikiLink( link.getWikiLink() ) ) {
-                linkState = new InterWikiLinkAttributeProviderState( wikiContext, link.hasRef() );
+                linkState = new InterWikiLinkAttributeProviderState( wikiContext, link.hasRef(), isImageInlining, inlineImagePatterns );
             } else if( StringUtils.startsWith( link.getWikiLink(), "#" ) ) {
                 linkState = new LocalFootnoteLinkAttributeProviderState( wikiContext );
             } else if( TextUtil.isNumber( link.getWikiLink() ) ) {
                 linkState = new LocalFootnoteRefLinkAttributeProviderState( wikiContext );
             } else {
-                linkState = new LocalLinkAttributeProviderState( wikiContext, link.hasRef() );
+                linkState = new LocalLinkAttributeProviderState( wikiContext, link.hasRef(), isImageInlining, inlineImagePatterns );
             }
             linkState.setAttributes( attributes, link );
         }
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProviderFactory.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProviderFactory.java
index 1a0d6d9..c61a6fc 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProviderFactory.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/JSPWikiLinkAttributeProviderFactory.java
@@ -18,12 +18,14 @@
  */
 package org.apache.wiki.markdown.extensions.jspwikilinks.attributeprovider;
 
-import org.apache.wiki.WikiContext;
-
 import com.vladsch.flexmark.html.AttributeProvider;
 import com.vladsch.flexmark.html.AttributeProviderFactory;
 import com.vladsch.flexmark.html.IndependentAttributeProviderFactory;
 import com.vladsch.flexmark.html.renderer.LinkResolverContext;
+import org.apache.oro.text.regex.Pattern;
+import org.apache.wiki.WikiContext;
+
+import java.util.List;
 
 
 /**
@@ -32,9 +34,15 @@
 public class JSPWikiLinkAttributeProviderFactory extends IndependentAttributeProviderFactory {
 
     final WikiContext wikiContext;
+    private final boolean isImageInlining;
+    private final List< Pattern > inlineImagePatterns;
 
-    public JSPWikiLinkAttributeProviderFactory( final WikiContext wikiContext ) {
+    public JSPWikiLinkAttributeProviderFactory( final WikiContext wikiContext,
+                                                final boolean isImageInlining,
+                                                final List< Pattern > inlineImagePatterns ) {
         this.wikiContext = wikiContext;
+        this.isImageInlining = isImageInlining;
+        this.inlineImagePatterns = inlineImagePatterns;
     }
 
     /**
@@ -44,7 +52,7 @@
      */
     @Override
     public AttributeProvider apply( final LinkResolverContext context ) {
-        return new JSPWikiLinkAttributeProvider( wikiContext );
+        return new JSPWikiLinkAttributeProvider( wikiContext, isImageInlining, inlineImagePatterns );
     }
 
 }
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/LocalLinkAttributeProviderState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/LocalLinkAttributeProviderState.java
index 48c749c..add256b 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/LocalLinkAttributeProviderState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/attributeprovider/LocalLinkAttributeProviderState.java
@@ -21,12 +21,15 @@
 import com.vladsch.flexmark.util.ast.Node;
 import com.vladsch.flexmark.util.html.Attributes;
 import com.vladsch.flexmark.util.sequence.CharSubSequence;
+import org.apache.oro.text.regex.Pattern;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.parser.LinkParsingOperations;
 import org.apache.wiki.parser.MarkupParser;
 
+import java.util.List;
+
 
 /**
  * {@link NodeAttributeProviderState} which sets the attributes for local links.
@@ -36,11 +39,18 @@
     private final boolean hasRef;
     private final WikiContext wikiContext;
     private final LinkParsingOperations linkOperations;
+    private final boolean isImageInlining;
+    private final List< Pattern > inlineImagePatterns;
 
-    public LocalLinkAttributeProviderState( final WikiContext wikiContext, final boolean hasRef ) {
+    public LocalLinkAttributeProviderState( final WikiContext wikiContext,
+                                            final boolean hasRef,
+                                            final boolean isImageInlining,
+                                            final List< Pattern > inlineImagePatterns ) {
         this.hasRef = hasRef;
         this.wikiContext = wikiContext;
         this.linkOperations = new LinkParsingOperations( wikiContext );
+        this.isImageInlining = isImageInlining;
+        this.inlineImagePatterns = inlineImagePatterns;
     }
 
     /**
@@ -53,7 +63,7 @@
         final int hashMark = link.getUrl().toString().indexOf( '#' );
         final String attachment = wikiContext.getEngine().getManager( AttachmentManager.class ).getAttachmentInfoName( wikiContext, link.getWikiLink() );
         if( attachment != null ) {
-            if( !linkOperations.isImageLink( link.getUrl().toString() ) ) {
+            if( !linkOperations.isImageLink( link.getUrl().toString(), isImageInlining, inlineImagePatterns ) ) {
                 attributes.replaceValue( "class", MarkupParser.CLASS_ATTACHMENT );
                 final String attlink = wikiContext.getURL( WikiContext.ATTACH, link.getWikiLink() );
                 attributes.replaceValue( "href", attlink );
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/ExternalLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/ExternalLinkNodePostProcessorState.java
index 3e8dac8..bd2ee43 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/ExternalLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/ExternalLinkNodePostProcessorState.java
@@ -21,11 +21,14 @@
 import com.vladsch.flexmark.util.ast.Node;
 import com.vladsch.flexmark.util.ast.NodeTracker;
 import com.vladsch.flexmark.util.sequence.CharSubSequence;
+import org.apache.oro.text.regex.Pattern;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.parser.LinkParsingOperations;
 import org.apache.wiki.parser.MarkupParser;
 
+import java.util.List;
+
 
 /**
  * {@link NodePostProcessorState} which further post processes external links.
@@ -34,11 +37,17 @@
 
     private final WikiContext wikiContext;
     private final LinkParsingOperations linkOperations;
+    private final boolean isImageInlining;
+    private final List< Pattern > inlineImagePatterns;
     private boolean m_useOutlinkImage = true;
 
-    public ExternalLinkNodePostProcessorState( final WikiContext wikiContext ) {
+    public ExternalLinkNodePostProcessorState( final WikiContext wikiContext,
+                                               final boolean isImageInlining,
+                                               final List< Pattern > inlineImagePatterns ) {
         this.wikiContext = wikiContext;
         this.linkOperations = new LinkParsingOperations( wikiContext );
+        this.isImageInlining = isImageInlining;
+        this.inlineImagePatterns = inlineImagePatterns;
         this.m_useOutlinkImage = wikiContext.getBooleanWikiProperty( MarkupParser.PROP_USEOUTLINKIMAGE, m_useOutlinkImage );
     }
 
@@ -49,7 +58,7 @@
      */
     @Override
     public void process( final NodeTracker state, final JSPWikiLink link ) {
-        if( linkOperations.isImageLink( link.getUrl().toString() ) ) {
+        if( linkOperations.isImageLink( link.getUrl().toString(), isImageInlining, inlineImagePatterns ) ) {
             new ImageLinkNodePostProcessorState( wikiContext, link.getUrl().toString(), link.hasRef() ).process( state, link );
         } else {
             link.setUrl( CharSubSequence.of( link.getUrl().toString() ) );
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/InterWikiLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/InterWikiLinkNodePostProcessorState.java
index 39a1252..340cf65 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/InterWikiLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/InterWikiLinkNodePostProcessorState.java
@@ -23,6 +23,7 @@
 import com.vladsch.flexmark.util.ast.NodeTracker;
 import com.vladsch.flexmark.util.sequence.CharSubSequence;
 import org.apache.log4j.Logger;
+import org.apache.oro.text.regex.Pattern;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.i18n.InternationalizationManager;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
@@ -32,6 +33,7 @@
 import org.apache.wiki.util.TextUtil;
 
 import java.text.MessageFormat;
+import java.util.List;
 import java.util.ResourceBundle;
 
 
@@ -43,13 +45,20 @@
     private static final Logger LOG = Logger.getLogger( InterWikiLinkNodePostProcessorState.class );
     private final WikiContext wikiContext;
     private final LinkParsingOperations linkOperations;
+    private final boolean isImageInlining;
+    private final List< Pattern > inlineImagePatterns;
     private final Document document;
     private final boolean m_wysiwygEditorMode;
     private boolean m_useOutlinkImage = true;
 
-    public InterWikiLinkNodePostProcessorState( final WikiContext wikiContext, final Document document ) {
+    public InterWikiLinkNodePostProcessorState( final WikiContext wikiContext,
+                                                final Document document,
+                                                final boolean isImageInlining,
+                                                final List< Pattern > inlineImagePatterns ) {
         this.wikiContext = wikiContext;
         this.linkOperations = new LinkParsingOperations( wikiContext );
+        this.isImageInlining = isImageInlining;
+        this.inlineImagePatterns = inlineImagePatterns;
         this.document = document;
         this.m_useOutlinkImage = wikiContext.getBooleanWikiProperty( MarkupParser.PROP_USEOUTLINKIMAGE, m_useOutlinkImage );
         final Boolean wysiwygVariable = ( Boolean )wikiContext.getVariable( WikiContext.VAR_WYSIWYG_EDITOR_MODE );
@@ -68,7 +77,7 @@
             String urlReference = wikiContext.getEngine().getInterWikiURL( refAndPage[ 0 ] );
             if( urlReference != null ) {
                 urlReference = TextUtil.replaceString( urlReference, "%s", refAndPage[ 1 ] );
-                if( linkOperations.isImageLink( urlReference ) ) {
+                if( linkOperations.isImageLink( urlReference, isImageInlining, inlineImagePatterns ) ) {
                     new ImageLinkNodePostProcessorState( wikiContext, urlReference, link.hasRef() ).process( state, link );
                 } else {
                     link.setUrl( CharSubSequence.of( urlReference ) );
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiLinkNodePostProcessor.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiLinkNodePostProcessor.java
index 2aba7de..0ee69f1 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiLinkNodePostProcessor.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiLinkNodePostProcessor.java
@@ -25,12 +25,15 @@
 import com.vladsch.flexmark.util.ast.Node;
 import com.vladsch.flexmark.util.ast.NodeTracker;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.oro.text.regex.Pattern;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.parser.LinkParsingOperations;
 import org.apache.wiki.parser.MarkupParser;
 import org.apache.wiki.util.TextUtil;
 
+import java.util.List;
+
 
 /**
  * {@link NodePostProcessor} to convert {@link Link}s into {@link JSPWikiLink}s.
@@ -41,13 +44,20 @@
 
     protected final WikiContext m_context;
     protected final LinkParsingOperations linkOperations;
+    private final boolean isImageInlining;
+    private final List< Pattern > inlineImagePatterns;
     protected boolean m_useOutlinkImage = true;
     protected final Document document;
 
-    public JSPWikiLinkNodePostProcessor( final WikiContext m_context, final Document document ) {
+    public JSPWikiLinkNodePostProcessor( final WikiContext m_context,
+                                         final Document document,
+                                         final boolean isImageInlining,
+                                         final List< Pattern > inlineImagePatterns ) {
         this.m_context = m_context;
         this.document = document;
         linkOperations = new LinkParsingOperations( m_context );
+        this.isImageInlining = isImageInlining;
+        this.inlineImagePatterns = inlineImagePatterns;
         m_useOutlinkImage = m_context.getBooleanWikiProperty( MarkupParser.PROP_USEOUTLINKIMAGE, m_useOutlinkImage );
     }
 
@@ -71,15 +81,15 @@
             } else if( linkOperations.isVariableLink( link.getUrl().toString() ) ) {
                 linkPostProcessor = new VariableLinkNodePostProcessorState( m_context );
             } else if( linkOperations.isExternalLink( link.getUrl().toString() ) ) {
-                linkPostProcessor = new ExternalLinkNodePostProcessorState( m_context );
+                linkPostProcessor = new ExternalLinkNodePostProcessorState( m_context, isImageInlining, inlineImagePatterns );
             } else if( linkOperations.isInterWikiLink( link.getUrl().toString() ) ) {
-                linkPostProcessor = new InterWikiLinkNodePostProcessorState( m_context, document );
+                linkPostProcessor = new InterWikiLinkNodePostProcessorState( m_context, document, isImageInlining, inlineImagePatterns );
             } else if( StringUtils.startsWith( link.getUrl().toString(), "#" ) ) {
                 linkPostProcessor = new LocalFootnoteLinkNodePostProcessorState( m_context );
             } else if( TextUtil.isNumber( link.getUrl().toString() ) ) {
                 linkPostProcessor = new LocalFootnoteRefLinkNodePostProcessorState( m_context );
             } else {
-                linkPostProcessor = new LocalLinkNodePostProcessorState( m_context );
+                linkPostProcessor = new LocalLinkNodePostProcessorState( m_context, isImageInlining, inlineImagePatterns );
             }
             linkPostProcessor.process( state, link );
         }
@@ -95,7 +105,7 @@
 
         if( previous != null ) {
             previous.insertAfter( link );
-        } else {
+        } else if( parent != null ) {
             parent.appendChild( link );
         }
 
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiNodePostProcessorFactory.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiNodePostProcessorFactory.java
index 889d80d..d929240 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiNodePostProcessorFactory.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/JSPWikiNodePostProcessorFactory.java
@@ -23,8 +23,11 @@
 import com.vladsch.flexmark.parser.block.NodePostProcessorFactory;
 import com.vladsch.flexmark.util.ast.Document;
 import com.vladsch.flexmark.util.data.DataHolder;
+import org.apache.oro.text.regex.Pattern;
 import org.apache.wiki.WikiContext;
 
+import java.util.List;
+
 
 /**
  * Simple {@link NodePostProcessorFactory} to instantiate {@link JSPWikiLinkNodePostProcessor}s.
@@ -32,11 +35,18 @@
 public class JSPWikiNodePostProcessorFactory extends NodePostProcessorFactory {
 
     private final WikiContext m_context;
+    private final boolean isImageInlining;
+    private final List< Pattern > inlineImagePatterns;
 
-    public JSPWikiNodePostProcessorFactory( final WikiContext m_context, final DataHolder options ) {
+    public JSPWikiNodePostProcessorFactory( final WikiContext m_context,
+                                            final DataHolder options,
+                                            final boolean isImageInlining,
+                                            final List< Pattern > inlineImagePatterns ) {
         super( true );
         addNodes( Link.class ); // needs to be called before create( Document )
         this.m_context = m_context;
+        this.isImageInlining = isImageInlining;
+        this.inlineImagePatterns = inlineImagePatterns;
     }
 
     /**
@@ -44,7 +54,7 @@
      */
     @Override
     public NodePostProcessor apply( final Document document ) {
-        return new JSPWikiLinkNodePostProcessor( m_context, document );
+        return new JSPWikiLinkNodePostProcessor( m_context, document, isImageInlining, inlineImagePatterns );
     }
 
 }
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalLinkNodePostProcessorState.java b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalLinkNodePostProcessorState.java
index 0e1629a..b1eca9e 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalLinkNodePostProcessorState.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/markdown/extensions/jspwikilinks/postprocessor/LocalLinkNodePostProcessorState.java
@@ -22,12 +22,15 @@
 import com.vladsch.flexmark.util.ast.Node;
 import com.vladsch.flexmark.util.ast.NodeTracker;
 import com.vladsch.flexmark.util.sequence.CharSubSequence;
+import org.apache.oro.text.regex.Pattern;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.attachment.AttachmentManager;
 import org.apache.wiki.markdown.nodes.JSPWikiLink;
 import org.apache.wiki.parser.LinkParsingOperations;
 import org.apache.wiki.parser.MarkupParser;
 
+import java.util.List;
+
 
 /**
  * {@link NodePostProcessorState} which further post processes local links.
@@ -36,10 +39,16 @@
 
     private final WikiContext wikiContext;
     private final LinkParsingOperations linkOperations;
+    private final boolean isImageInlining;
+    private final List< Pattern > inlineImagePatterns;
 
-    public LocalLinkNodePostProcessorState( final WikiContext wikiContext ) {
+    public LocalLinkNodePostProcessorState( final WikiContext wikiContext,
+                                            final boolean isImageInlining,
+                                            final List< Pattern > inlineImagePatterns ) {
         this.wikiContext = wikiContext;
         this.linkOperations = new LinkParsingOperations( wikiContext );
+        this.isImageInlining = isImageInlining;
+        this.inlineImagePatterns = inlineImagePatterns;
     }
 
     /**
@@ -52,7 +61,7 @@
         final int hashMark = link.getUrl().toString().indexOf( '#' );
         final String attachment = wikiContext.getEngine().getManager( AttachmentManager.class ).getAttachmentInfoName( wikiContext, link.getUrl().toString() );
         if( attachment != null  ) {
-            if( !linkOperations.isImageLink( link.getUrl().toString() ) ) {
+            if( !linkOperations.isImageLink( link.getUrl().toString(), isImageInlining, inlineImagePatterns ) ) {
                 final String attlink = wikiContext.getURL( WikiContext.ATTACH, link.getUrl().toString() );
                 link.setUrl( CharSubSequence.of( attlink ) );
                 link.removeChildren();
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownDocument.java b/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownDocument.java
index e441a0a..17eb5fa 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownDocument.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownDocument.java
@@ -25,6 +25,7 @@
 import com.vladsch.flexmark.util.ast.Node;
 import com.vladsch.flexmark.util.data.MutableDataSet;
 import com.vladsch.flexmark.util.misc.Extension;
+import org.apache.oro.text.regex.Pattern;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiPage;
 import org.apache.wiki.markdown.MarkdownForJSPWikiExtension;
@@ -32,6 +33,7 @@
 import org.apache.wiki.parser.WikiDocument;
 
 import java.util.Arrays;
+import java.util.List;
 
 
 /**
@@ -58,12 +60,12 @@
 	 * @param context current wikicontext
 	 * @return configuration options for MarkdownRenderers.
 	 */
-	public static MutableDataSet options( final WikiContext context ) {
+	public static MutableDataSet options( final WikiContext context, final boolean isImageInlining, final List< Pattern > inlineImagePatterns ) {
 		final MutableDataSet options = new MutableDataSet();
 		options.setFrom( ParserEmulationProfile.COMMONMARK );
 		// align style of Markdown's footnotes extension with jspwiki footnotes refs
 		options.set( FootnoteExtension.FOOTNOTE_LINK_REF_CLASS, JSPWikiMarkupParser.CLASS_FOOTNOTE_REF );
-		options.set( Parser.EXTENSIONS, Arrays.asList( new Extension[] { new MarkdownForJSPWikiExtension( context ),
+		options.set( Parser.EXTENSIONS, Arrays.asList( new Extension[] { new MarkdownForJSPWikiExtension( context, isImageInlining, inlineImagePatterns ),
 		                                                                 FootnoteExtension.create(),
 		                                                                 TocExtension.create() } ) );
 		return options;
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownParser.java b/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownParser.java
index d36647b..2c69f09 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownParser.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/parser/markdown/MarkdownParser.java
@@ -43,7 +43,7 @@
             context.getEngine().getManager( AuthorizationManager.class ) == null ) {
             disableAccessRules();
         }
-        parser = Parser.builder( MarkdownDocument.options( context ) ).build();
+        parser = Parser.builder( MarkdownDocument.options( context, isImageInlining(), getInlineImagePatterns() ) ).build();
     }
 
     /**
diff --git a/jspwiki-markdown/src/main/java/org/apache/wiki/render/markdown/MarkdownRenderer.java b/jspwiki-markdown/src/main/java/org/apache/wiki/render/markdown/MarkdownRenderer.java
index bf13633..1400b61 100755
--- a/jspwiki-markdown/src/main/java/org/apache/wiki/render/markdown/MarkdownRenderer.java
+++ b/jspwiki-markdown/src/main/java/org/apache/wiki/render/markdown/MarkdownRenderer.java
@@ -18,14 +18,18 @@
  */
 package org.apache.wiki.render.markdown;
 
-import java.io.IOException;
-
+import com.vladsch.flexmark.html.HtmlRenderer;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.oro.text.regex.Pattern;
 import org.apache.wiki.WikiContext;
+import org.apache.wiki.parser.MarkupParser;
 import org.apache.wiki.parser.WikiDocument;
 import org.apache.wiki.parser.markdown.MarkdownDocument;
+import org.apache.wiki.render.RenderingManager;
 import org.apache.wiki.render.WikiRenderer;
 
-import com.vladsch.flexmark.html.HtmlRenderer;
+import java.io.IOException;
+import java.util.List;
 
 
 /**
@@ -37,7 +41,12 @@
 
 	public MarkdownRenderer( final WikiContext context, final WikiDocument doc ) {
 		super( context, doc );
-		renderer = HtmlRenderer.builder( MarkdownDocument.options( context ) ).build();
+		final MarkupParser mp = context.getEngine()
+				                       .getManager( RenderingManager.class )
+				                       .getParser( context, StringUtils.defaultString( doc.getPageData() ) );
+		final boolean isImageInlining = mp.isImageInlining();
+		final List< Pattern > inlineImagePatterns = mp.getInlineImagePatterns();
+		renderer = HtmlRenderer.builder( MarkdownDocument.options( context, isImageInlining, inlineImagePatterns ) ).build();
 	}
 
 	/**