When you upload an image to WordPress it will automatically convert the same Image to multiple sizes while still keep the best quality.
The default image sizes are setup on the settings -> media screen.

But WordPress will only allow you to use 3 image sizes, thumbnail, medium and large which you can choose from when you add the image to your post.
If you want more options for options then you need to add a bit of code into your functions.php file, use the below snippet to add additional images sizes to your media files.
This uses the WordPress function add_image_size to add a new image size to your WordPress theme.
<?php
if ( function_exists( 'add_image_size' ) ) {
add_image_size( 'custom-image-size1', 300, 9999 ); //300 pixels wide (and unlimited height)
add_image_size( 'custom-image-size2', 220, 180, true ); //(cropped)
}
?>
To add this image to the page all you have to do is use the function the_post_thumbnail(). As we have named the image as custom-image-size1 we can pass this parameter into this function to display the image.
if ( has_post_thumbnail() ){
the_post_thumbnail( 'custom-image-size1' );
}
