Changeset 16872 in josm for trunk


Ignore:
Timestamp:
2020-08-12T13:03:59+02:00 (4 years ago)
Author:
stoecker
Message:

fix image display in MOTD, see #15240

Location:
trunk/src/org/openstreetmap/josm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/GettingStarted.java

    r16871 r16872  
    3434import org.openstreetmap.josm.io.OnlineResource;
    3535import org.openstreetmap.josm.spi.preferences.Config;
     36import org.openstreetmap.josm.tools.ImageProvider;
     37import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
    3638import org.openstreetmap.josm.tools.LanguageInfo;
    3739import org.openstreetmap.josm.tools.Logging;
     
    199201
    200202    static String fixImageLinks(String s) {
    201         Matcher m = Pattern.compile("src=\"/browser/trunk/resources(/images/.*?\\.svg)\\?format=raw\"").matcher(s);
     203        Matcher m = Pattern.compile("src=\"/browser/trunk/resources/images/(.*?)\\.(png|svg)\\?format=raw\"").matcher(s);
    202204        StringBuffer sb = new StringBuffer();
    203205        while (m.find()) {
    204206            String im = m.group(1);
    205             URL u = GettingStarted.class.getResource(im);
     207            String u = new ImageProvider(im).setMaxSize(ImageSizes.HTMLINLINE).getDataURL();
    206208            if (u != null) {
    207                 try {
    208                     m.appendReplacement(sb, Matcher.quoteReplacement("src=\"" + Utils.betterJarUrl(u, u) + '\"'));
    209                 } catch (IOException e) {
    210                     Logging.error(e);
    211                 }
     209                m.appendReplacement(sb, Matcher.quoteReplacement("src=\"" + u + '\"'));
    212210            }
    213211        }
  • trunk/src/org/openstreetmap/josm/tools/ImageProvider.java

    r16838 r16872  
    2121import java.awt.image.ImageFilter;
    2222import java.awt.image.ImageProducer;
     23import java.awt.image.RenderedImage;
    2324import java.awt.image.RGBImageFilter;
    2425import java.awt.image.WritableRaster;
    2526import java.io.ByteArrayInputStream;
     27import java.io.ByteArrayOutputStream;
    2628import java.io.File;
    2729import java.io.IOException;
     
    174176         * @since 13369
    175177         */
    176         STATUSLINE(18, 18);
     178        STATUSLINE(18, 18),
     179        /**
     180         * HTML inline image
     181         * @since 16872
     182         */
     183        HTMLINLINE(24, 24);
    177184
    178185        private final int virtualWidth;
     
    663670        else
    664671            return ir.getImageIcon(new Dimension(virtualWidth, virtualHeight), multiResolution);
     672    }
     673
     674    /**
     675     * Execute the image request and scale result.
     676     * @return the requested image as data: URL or null if the request failed
     677     */
     678    public String getDataURL() {
     679        ImageIcon ii = get();
     680        if (ii != null) {
     681            final ByteArrayOutputStream os = new ByteArrayOutputStream();
     682            try {
     683                Image i = ii.getImage();
     684                if(i instanceof RenderedImage) {
     685                    ImageIO.write((RenderedImage)i, "png", os);
     686                    return "data:image/png;base64,"+Base64.getEncoder().encodeToString(os.toByteArray());
     687                }
     688            } catch (final IOException ioe) {
     689                return null;
     690            }
     691        }
     692        return null;
    665693    }
    666694
Note: See TracChangeset for help on using the changeset viewer.