Gracias por vuestra ayuda, estoy usando el
zoomy, un efecto jquery para hacer zoom sobre la imagen y el problema estaba ahí, cuando le daba margenes a la imagen interferían con el script.
Al final lo he solucionado de otra forma, la comento por si a alguien le puede servir alguna vez (aunque sea un poco cogida con pinzas... jejeje):
Primero saco el ancho de la foto
list($ancho_foto) = getimagesize("$ruta_foto");
luego calculo para un ancho de 800px (que es el ancho máximo que he destinado a la foto) cual sería el margen que debería tener
$calculo_margen = (800 - $ancho_ppal)/2;
declaro un style con el ancho de la imagen y el margen que he calculado antes, redondeandolo hacia abajo
$margen_ppal = "style='width: $ancho_ppal" . "px" . "; margin: 0px " . round($calculo_margen, 0, PHP_ROUND_HALF_DOWN) . "px;'";
al final aplico este style al div que contiene la foto.
Un saludo :D