Вместо того, чтобы обрезать изображения, вы также можете использовать уменьшенное изображение с нормальным размером, которое достаточно велико, чтобы поместиться в поле, для которого вы хотите его полностью, и установить его в качестве фонового изображения.
Таким образом, если размер поля 100x100 пикселей, размер миниатюрных изображений необходимо изменить до ширины 100 пикселей для вертикального изображения и высоты 100 пикселей для горизонтального изображения.
Кстати, для современных браузеров вы можете использовать:
background-size: cover;
Чтобы изображение полностью покрывало рамку, сохраняя соотношение сторон.
Редактировать: Так что в вашем php вы бы сделали что-то вроде:
echo '<div style="background-image: url(' . $path_to_image . ');"></div>';
и в css:
background-position: center center;
background-repeat: no-repeat;
background-size: cover;