You've been using the word "thumbnail" throughout. I'd use "preview" instead.  In the Gallery app, at least, we have 3 sizes of images: thumbnails are the smallest.  Previews are about the size of the screen, and then there is the full size image.

It doesn't matter much, though.

Rather than a scale factor you could also pass a target width and target height and return the smallest preview that was >= those sizes.  That's what I have to do in the gallery for images that don't have an embedded EXIF preview.  I don't know if it is a common use case and worth implementing in this library, though.