Imagemagick sfThumbnailPlugin fix for scaling under symfony 1.0

Chris Sedlmayr

16 Mar 2010

I’ve been using the sfThumbnail Plugin in symfony 1.0 for image resizing when users upload.
When I asked the plugin to resize an image with scaling there was a problem and the image came out skewed and distorted.
After a little research I found the following fix.

Once you have installed the plugin, edit the sfImageMagickAdapter.class.php in the plugin dir.

Change lines 223-237:

From

<?php
$width  = $this->sourceWidth;
$height = $this->sourceHeight;
$x = $y = 0;
switch (@$this->options['method']) {
  case "shave_all":
    if ($width > $height)
    {
      $x = ceil(($width - $height) / 2 );
      $width = $height;
    }
    elseif ($height > $width)
    {
      $y = ceil(($height - $width) / 2);
      $height = $width;
    }

To

<?php
$width  = $this->sourceWidth;
$height = $this->sourceHeight;
$mWidth = $this->maxWidth;
$mHeight = $this->maxHeight;
$x = $y = 0;
switch (@$this->options['method']) {
  case "shave_all":
    if ($width > $height)
    {
      $x = ceil(($width - ($height*$mWidth)/$mHeight) / 2 );
      $width = $height;
    }
    elseif ($height > $width)
    {
      $y = ceil(($height - $width*($mHeight/$mWidth)) / 2);
      $height = $width;
    }

It’s a straight forward edit so you should be able to see why this simple change has the desired effect, and your images will now behave nicely when scaling.