Automatically wrap multiple images in div

This is a function I use to add a wrapper to each image. I know it’s not 100% what you want, but I thought this might give you a handle to work from.

function add_image_wrapper( $content ) {
    $content = preg_replace_callback( '/<img[^>]+>/im', function ( $matches ) {
        $image   = $matches[0];
        $classes = array();
        preg_match( '/class="align([^"]+)"/im', $image, $classes );

        $align = ( ! empty( $classes ) ? $classes[1] : null );
        $class="";
        if ( in_array( $align, array( 'left', 'right' ) ) ) {
            $class="media--align-" . $align;
        }

        return sprintf(
            '<div class="media %s">%s</div>',
            $class, $image
        );
    }, $content );

    // Remove unnecessary classes from media-wrappers inside figures
    $content = preg_replace_callback( '/<figure[^>]+>.+<\/figure>/im', function ( $matches ) {
        $figure = $matches[0];

        return preg_replace( '/class="media[^"]+"/im', 'class="media"', $figure );
    }, $content );

    return $content;
}
add_filter( 'the_content', 'add_image_wrapper', 99, 1 );