I don't think it's about the resolution of the image it's just the size of the sprite.
If you change the size of the sprite (or save it to your camera roll) you will see that the resolution is ok.
Note that the sizing is set for portrait. You will need to change the logic for landscape
Try this
// Project: test356
// Created: 20-11-01
// show all errors
SetErrorMode(2)
// set window properties
SetWindowTitle( "test356" )
SetWindowSize( GetDeviceWidth(), GetDeviceHeight(), 0 )
SetWindowAllowResize( 1 ) // allow the user to resize the window
// set display properties
SetVirtualResolution( GetDeviceWidth(), GetDeviceHeight() ) // doesn't have to match the window
SetOrientationAllowed( 1, 1, 1, 1 ) // allow both portrait and landscape on mobile devices
SetSyncRate( 30, 0 ) // 30fps instead of 60 to save battery
SetScissor( 0,0,0,0 ) // use the maximum available screen space, no black borders
UseNewDefaultFonts( 1 )
ShowImageCaptureScreen()
while IsCapturingImage()
endwhile
gci=GetCapturedImage()
SaveImage(gci, "photo.png")
if gci>0
camsprite = CreateSprite(gci)
SetSpritePosition(camsprite,0,0)
SetSpriteSize(camsprite, -1, GetDeviceHeight())
setspritedepth(camsprite,1)
endif
do
Print( ScreenFPS() )
Sync()
loop