You may want to look at the plugin Regenerate Thumbnails by Viper007Bond.
Basically, this is how to do it:
function regenerateThumbnails() {
$images = $wpdb->get_results( "SELECT ID FROM $wpdb->posts WHERE post_type="attachment" AND post_mime_type LIKE 'image/%'" );
foreach ( $images as $image ) {
$id = $image->ID;
$fullsizepath = get_attached_file( $id );
if ( false === $fullsizepath || !file_exists($fullsizepath) )
return;
if ( wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $fullsizepath ) ) )
return true;
else
return false;
}
}
Note: This function is not very scalable. It will loop through all the images and regenerate thumbnails one by one, which may consume a large amount of memory. So, you may want to enhance it.