There are several coverage plugins (as an instance: imagemosaic, jp2k, imageio-ext-gdal, ...) which have an Utilities class containing a method which check if a provided dimensions, when intersected with a source region of an ImageReadParam instance, does not result in an empty rectangle. Moreover, in case the region intersection is not empty, it set that as the new source region for the ImageReadParam.
It would be great to have that method shared in a common Utilities class.
Best choice for this is the CoverageUtilities class in the Coverage module.
The attached patch will allow for this.