|
|
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
скорее всего ошибки связаны с настройками вашего хостинга.
|