Подогнать размер картинки, находящейся удаленно

J L

Здравствуйте! У меня есть форма, а в ней кнопка:

Каждый раз я загружаю в нее разные изображения по url. Мне нужно, чтобы это изображение всегда пропорционально влезало в width:200, height:300. То есть оно может быть меньше, но не может превышать эти значения. Изображение не должно искажаться, то есть нельзя просто определить значения width и height.

Я пробовал сделать так:

<!--?if(imagesy($a_img_s)-->300){return "height=300;";}?>>

Однако это не сработало, и совсем не пропорционально. У изображений может быть больше как и height, так и width. Помогите чем-то. Спасибо :)

2 ответа

J L

Рекомендую сделать сие через JS. Аргументы:

  1. На вывод страницы с сотней таких картинок уйдет куча времени, ибо для этого нужен как минимум запрос на сервер картинки
  2. Без кэширования это неправильно идейно, хотя это расширение 1 пункта
  3. В JS есть img.onload, который решит эту задачу, имхо, лучше.

Вот мой вариант (отлаженный, рабочий)


J L

<!--?
function insertScales($imgx,$imgy,$maxx=200,$maxy=300){
if($imgy<=0 || $maxy<=0 || $imgx<=0 || $maxx<=0){
    return;
}
$ratio = $imgx/$imgy;

if($ratio-->($maxx/$maxy)){
  if($imgx>$maxx){
    $imgx = $maxx;
    $imgy = $imgx/$ratio;
  }
}else{
  if($imgy>$maxy){
    $imgy = $maxy;
    $imgx = $imgy*$ratio;
  }
}
return 'width="'.$imgx.'px" height="'.$imgy.'px"';
}
?>
 />

licensed under cc by-sa 3.0 with attribution.