Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля
25.03.2010, 09:14
Гость
Гость

Люди добрые подскажите как реализовать следуюшую конструкцию, находил темы но некак немогу въехать что куда подстовлять, буду крайне боагодарен ели напишите болие менее подробно

Допустим я загружаю картинку большого формата (в какомнибуть компоненте), мне надо чтоб в то поле куда я загружаю большую картику встовал оригинал (ну с этим проблем нету), а в скрытое поле загружалась уменьшенная копия, что нужно для этого зделать? netcat 3.5
25.03.2010, 09:23
malich
Андрей Малков

Зарегистрирован:
2005-08-09
Сообщений: 522

Допустим у вас в компоненте два поля:
foto - исходная картинка
fotoThumb - уменьшенная

В действии после добавления нужного компонента жмем "сгенерировать код действия", получаем что то типа:

Код:
";
if($inside_admin) {
ob_end_clean();
header("Location: ".$goBackLink."&inside_admin=1");
exit;
}
else {
echo $IsChecked ? NETCAT_MODERATION_MSG_OBJADD : NETCAT_MODERATION_MSG_OBJADDMOD;
echo "<br><br>".$goBack;
}
echo "


вставляем код:

Код:
";
### ресайз фото
global $nc_core;
require_once($nc_core->INCLUDE_FOLDER."classes/nc_imagetransform.class.php");
if ($_FILES[f_foto][size]!=0 && $_FILES[f_foto][type]!='')
{
$photo_path = $DOCUMENT_ROOT.nc_file_path($classID, $message, 'foto', "");
if ($photo_path) {
nc_ImageTransform::createThumb('foto','fotoThumb',100,100);
}
}

if($inside_admin) {
ob_end_clean();
header("Location: ".$goBackLink."&inside_admin=1");
exit;
}
else {
echo $IsChecked ? NETCAT_MODERATION_MSG_OBJADD : NETCAT_MODERATION_MSG_OBJADDMOD;
echo "<br><br>".$goBack;
}
echo "


если нужно еще уменьшить исходную картинку то:

Код:
";
### ресайз фото
global $nc_core;
require_once($nc_core->INCLUDE_FOLDER."classes/nc_imagetransform.class.php");
if ($_FILES[f_foto][size]!=0 && $_FILES[f_foto][type]!='')
{
$photo_path = $DOCUMENT_ROOT.nc_file_path($classID, $message, 'foto', "");
if ($photo_path) {
nc_ImageTransform::imgResize("$photo_path","$photo_path",300,300);
nc_ImageTransform::createThumb('foto','fotoThumb',100,100);
}
}

if($inside_admin) {
ob_end_clean();
header("Location: ".$goBackLink."&inside_admin=1");
exit;
}
else {
echo $IsChecked ? NETCAT_MODERATION_MSG_OBJADD : NETCAT_MODERATION_MSG_OBJADDMOD;
echo "<br><br>".$goBack;
}
echo "


по аналогии делаем для действия после изменения
25.03.2010, 11:53
Гость
Гость

извеняюсь может глупость напишу, я есче непопробывал но есть вопрос. Вот те цифирки 100,100 и 300,300 это ширина высота? если да как можно с сохранением пропорций?
25.03.2010, 11:55
malich
Андрей Малков

Зарегистрирован:
2005-08-09
Сообщений: 522

Цитата:
Вот те цифирки 100,100 и 300,300 это ширина высота?


да, это ширина и высота. Что бы с пропорциями, указывайте только ширину или высоту :-)

Код:
nc_ImageTransform::createThumb('foto','fotoThumb',100,'');
03.04.2010, 16:32
Гость
Гость

с этим разобрался, а как зделать так чтбы те изоброжение у которых ширина больше высоты изменялись по ширене фиксированно а по высоте в пропорцие ну и соответственно наоборот?
03.04.2010, 19:28
Гость
Гость

с прошлым постом разобрался, придумал это так:
Код:


### ресайз фото
global $nc_core;
require_once($nc_core->INCLUDE_FOLDER."classes/nc_imagetransform.class.php");
if ($_FILES[f_img][size]!=0 && $_FILES[f_img][type]!='')
{
$photo_path = $DOCUMENT_ROOT.nc_file_path($classID, $message, 'img', "");
if ($photo_path) {
$photo_path_size = getimagesize($photo_path);
if ($photo_path_size[0]>=$photo_path_size[1]) $w=214; $h='';
if ($photo_path_size[0]<$photo_path_size[1]) $w=''; $h=214;
nc_ImageTransform::createThumb('img','img_mini',$w,$h);
}
}


если изоброжение шириной больше чем высота то всё нрмально, но если высота больше чем ширина выскакивает ошибка
Код:

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/biznesr1/public_html/megashop42/netcat/require/classes/nc_imagetransform.class.php on line 50

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/biznesr1/public_html/megashop42/netcat/require/classes/nc_imagetransform.class.php on line 53

Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/biznesr1/public_html/megashop42/netcat/require/classes/nc_imagetransform.class.php on line 57

Warning: imagedestroy(): supplied argument is not a valid Image resource in /home/biznesr1/public_html/megashop42/netcat/require/classes/nc_imagetransform.class.php on line 59


в базу заносит все значения но сама картинка несоздаётся

подскажите где чт оподправить?
06.04.2010, 00:07
malich
Андрей Малков

Зарегистрирован:
2005-08-09
Сообщений: 522

Да сам посоветовал и сам столкнулся с подобной проблемой.
Всетаки при ресайзе изображений нужно указывать оба параметра (высота и ширина) иначе выдается подобная ошибка.
14.04.2010, 11:44
Гость
Гость

решил проблему, доберусь до дому опишу что надо подправить
14.04.2010, 11:57
Гость
Гость

недобираясь до дома решил написать, а то забуду

в файле netcatrequireclassesnc_imagetransform.class.php заменяем строчку
Код:

imgResize(...){
...
$fn_extrem = $mode ? 'max' : 'min';
...
}

на
Код:

imgResize(...){
...
$fn_extrem = $width>=$height ? 'min' : 'max';
...
}

и ещё долгими вычислениями я вычислил максимум ширину и высоту при которой ресайз работает нормально, иначе он ведёт себя как попало, незнаю с чем это связано но факт на лицо. Ширина и высота не больше 3300px

есть одно большое но убрав mod я незнаю как она себя поведёт если картинку надо будет не уменьшить а обрезать, в моем случае это и неважно, работает да и ладно
14.04.2010, 12:35
malich
Андрей Малков

Зарегистрирован:
2005-08-09
Сообщений: 522

Вы можете в условии добавления объекта написать условие, оперируя массивом $_FILES, где будете проверять максимальный размер изображения, максимальную ширину и высоту.

Ни про какие ограничения на размер для ресайза я не слышал.
Специально сделал ресайз файла 10 000 * 10 000 px и размером 7 mb
скорее всего ошибки связаны с настройками вашего хостинга.
198 196 2010-04-14 12:35:49 9897
Описание проекта