Index: src/org/openstreetmap/josm/data/imagery/street_level/IImageEntry.java
===================================================================
--- src/org/openstreetmap/josm/data/imagery/street_level/IImageEntry.java	(revision 18275)
+++ src/org/openstreetmap/josm/data/imagery/street_level/IImageEntry.java	(working copy)
@@ -93,6 +93,24 @@
     }
 
     /**
+     * Delete the image
+     * @return {@code true} if deletion was successful
+     * @throws UnsupportedOperationException If the implementation does not support deletion.
+     * Use {@link #isDeleteSupported()}} to check for support.
+     */
+
+    default boolean delete() {
+        throw new UnsupportedOperationException("remove is not supported for " + this.getClass().getSimpleName());
+    }
+    /**
+     * Check if image deletion is supported
+     * @return {@code true} if deletion is supported
+     */
+    default boolean isDeleteSupported() {
+        return false;
+    }
+
+    /**
      * Returns a display name for this entry (shown in image viewer title bar)
      * @return a display name for this entry
      */
Index: src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java
===================================================================
--- src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java	(revision 18275)
+++ src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java	(working copy)
@@ -25,6 +25,7 @@
 import org.openstreetmap.josm.tools.ExifReader;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Stores info about each image, with an optional thumbnail
@@ -190,6 +191,16 @@
         return true;
     }
 
+    @Override
+    public boolean isDeleteSupported() {
+        return true;
+    }
+
+    @Override
+    public boolean delete() {
+        return Utils.deleteFile(this.getFile());
+    }
+
     /**
      * Reads the image represented by this entry in the given target dimension.
      * @param target the desired dimension used for {@linkplain IIOParam#setSourceSubsampling subsampling} or {@code null}
Index: src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 18275)
+++ src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(working copy)
@@ -358,7 +358,9 @@
                     final List<ImageData> imageDataCollection = toDelete.stream().filter(ImageEntry.class::isInstance)
                             .map(ImageEntry.class::cast).map(ImageEntry::getDataSet).distinct().collect(Collectors.toList());
                     for (IImageEntry<?> delete : toDelete) {
-                        if (delete.isRemoveSupported() && delete.remove()) {
+                        // We have to be able to remove the image from the layer and the image from its storage location
+                        // If either are false, then don't remove the image.
+                        if (delete.isRemoveSupported() && delete.isDeleteSupported() && delete.remove() && delete.delete()) {
                             Logging.info("File {0} deleted.", delete.getFile());
                         } else {
                             JOptionPane.showMessageDialog(
