BlazeDS is normally used to send objects serialized in AMF. It looks like an overkill to do this for an image, as it will be sent as ByteArray, but you'll spend resources processing it. Possibly, a better way, especially if the image is a static content, just serve it as a static file with whatever server running BlazeDS.
There are different ways you can use an image in Flex. Some particular to Flex framework are: use it as a source to the Image component, however, this component is somewhat too big for a number of tasks. For example, creating tiles of the same image will be very ineffective if you use this component. There is BitmapImage, which is meant to be a lightweight counterpart of Image, but it may not have all the desired functionality (it doesn't inherit from InteractiveObject, so it cannot respond to mouse events. It is also only available as Spark component.
What I usually do, if I need to use images is this:
If I need to cache them in the program (to reuse their BitmapData) I write a class that is responsible for loading and caching the results.
I write a very simple component that extends UIComponent and uses it's graphics property to draw the given BitmapData into it. This usually allows for simple sharing of the same BitmapData in several components.
Have this component override updateDisplayList method so that it would scale or trim the BitmapData it uses.
I do use Loader to load images, as there's really no other way to do it. Other components such as Image or SWFLoader or BitmapImage use Loader too and they don't add anything of value on top of that.
Possibly, if you need slice-9-grid functionality, then there is something built-in in the Spark set of components, yet I'd still rather do it myself then rely on it. Flex components aren't to be trusted really.