|
|
|
| Есть функция:
<?php
function imgResize($image_path, $new_image_path, $w, $h, $smart_resize = false, $watermark = false, $watermark_path = "") {
$size = getimagesize($image_path);
$misratio = $size[0] / $size[1];
if($w / $h < $misratio) $h = $w * $misratio;
else $w = $h * $misratio;
$ext = strtolower(substr(strchr($image_path, '.'), 1));
$ext = $ext == 'jpg' ? 'jpeg' : $ext;
$open = 'imagecreatefrom' . $ext;
$save = 'image' . $ext;
$image_temp = imagecreatetruecolor($w, $h);
imagecopyresampled($image_temp, $open($image_path), 0, 0, 0, 0, $w, $h, $size[0], $size[1]);
if($watermark){
$wm = imagecreatefromgif($watermark_path);
$wmw = imagesx($wm); $itw = imagesx($image_temp);
$wmh = imagesy($wm); $ith = imagesy($image_temp);
$rx = ($itw - $wmw);
//$trcolor = imagecolorexact($wm, 255, 255, 255);
//imagecolortransparent($wm, $trcolor);
imagecopymerge($image_temp, $wm, $rx, 0, 0, 0, $wmw, $wmh, 35);
}
return $save($image_temp, (empty($new_image_path) ? $image_path : $new_image_path), 80);
}
?>
|
получает $w, $h - допустим 800х600
Но хотелось бы как-то сделать так, чтобы если высота картинки больше ширины то $w, $h менялись бы на 600х800.
Логика совсем не работает) помогите :) | |
|
|
|
|
автор: temp (30.05.2009 в 15:23) |
|
|
для: sl1p
(30.05.2009 в 13:48)
| | примерно так:
$size_img = getimagesize($image);
if($size_img[0] < $size_img[1])
{
$temp = $w;
$w = $h;
$h = $temp;
}
|
| |
|
|
|
|
|
|
|
для: temp
(30.05.2009 в 15:23)
| | я так делал но, пропустил следующую строку кода и получалось криво:)
в общем вот так:
<?
if($smart_resize && $size[0] < $size[1]) {
$x = $w;
$w = $h;
$h = $x;
} else $smart_resize = false;
$misratio = $smart_resize ? $size[1] / $size[0] : $size[0] / $size[1];
|
| |
|
|
|
|
|
|
|
для: temp
(30.05.2009 в 15:23)
| | вроде это можно сделать без третьей переменной, была где-то похожая задачка. :) только не помню как | |
|
|
|
|
|
|
|
для: psychomc
(30.05.2009 в 16:52)
| |
list($a,$b) = array($b,$a)
|
:) | |
|
|
|