You can use a route together with a template that outputs your image:
Your route catches all urls that end in a number, e.g. www.domain.com/projects/project-a/1
and then loads a template called image.php:
c::set('routes', array(
array(
'pattern' => '(:all)/(:num)',
'action' => function($uri, $num) {
tpl::load(kirby()->roots()->templates() . DS . 'image.php', array('uri' => $uri, 'num' => $num),false);
}
)
));
In your image.php template you display the image:
<?php
$page = page($uri);
$image = $page->images()->nth($num);
?>
<img src="<?php echo $image->url(); ?>">
Edit: This is just a basic example. It only works in a permanent way if the number of images or their position does not change. Otherwise you would have to use a meta file for each image that contains a fixed number and you would have to find the image by that meta number.