Image resizing is actually configurable in ECF and it does get kinda complicated.
First the image resizing is configured in the meta attributes form. You can select to what size the image will be resized when thumbnail is created. If you do not set the Stretch Image property to true, the image will be just resized so it fits into the box, not the exact size specified. You can also set the image resize quality used, by default it is set to 100%. So quality is not reduced. (controlled in web services web.config file). Please not that GIFs won't be resized, since there is no API available for GIF images. You can further customize the Image handling in ECF by completely replacing the default ImageFileProvider with your own. It follows the MS. provider model and can be completely replaced.
The next step is how that image is displayed on the front end. By default it is using the custom Image control. It has a lot of logic built in into it. For instance, if no size attributes are set (Width or Height), then image will be rendered with a size attributes defined on the backend. So in your case it will render the thumbnail with width 150 and height 150, which may cause image to be distorted. If however you set either width or height, then only that property will be associated with an image and it will be sized appropriately by the browser. This is a choice that should be made by the developer when designing the templates.
One thing to keep in mind, all the image processing is done on the backend side, in the web services context. Images are cached for 30 seconds by default (meaning they are not regenerated on each request) in the images directory. The node that controls how image is rendered is in web service web.config and looks like this:
<!-- Defines custom encoding parameters used -->
<Encoding ImageQualityPercentage="100" DefaultFormat="Jpeg">
</Encoding>
The image file provider (default included provider) is defined in the web services web.config and looks like this:
<FrameworkProviders>
<imageService defaultProvider="FileImageProvider">
<providers>
<add name="FileImageProvider" type="Mediachase.eCF.Providers.FileImageProvider, Mediachase.ImageServiceProvider" cacheImages="true" storagePath="images" duration="30" applicationName="eCommerceFramework" />
</providers>
</imageService>
...
Let me know if that makes sense,
Sasha.