Another way to address the problem is to have two or three copies of the image at different sizes. Set the appropriate source image at Screen.Initialize or .ScreenOrientationChanged. In pic_size check the width or height to determine the screen size in pixels.
If you need to calculate the aspect ratio of the sprite to match the screen (regardless of the image) then you accept the distortion and quality of the image associated with doing that. Just set the image sprite height/width to a % of screen height/width whenever the orientation changes. You don't have to know which way it is just multiply what you get when it's changed by your % (eg imagesprite.width=screen1.width * .05).
BTW, you may want to use Canvas height and width rather than screen size. They'll only be the same as long as the canvas is set to fill parent and it's not in a layout. ;)