|
User_x
Зарегистрирован: 2007-06-20
Сообщений: 1
|
Спасибо большое за идеи из исходников.
Аналогично делюсь сотворённым на основе выше написанного.
Моя задача была:
есть N-полей в шаблоне, куда грузятся картинки,
нужно добавить ещё N-малых и ещё N-средних превьюшек.
Как реализовал:
функция, в которую указываем из какого поля брать и куда класть картинки. Попутно внутри функции убираются линки и файлы от предыдущих превьюшек, это позволяет использовать функцию и в действиях после изменения.
Плюсы: можно добавить в уже живой проект.
просто использовать - натравил на массивы ID полей, она сама всё пожрёт.
Минусы: жрёт всё, даже то что не нужно (нет проверки, надо или не надо создавать превьюшку, т.е. менялась картинка или её не трогали). Но такую проверку можно реализовать снаружи функции.
Комментами она не богата, потому что времени не хва...
function.inc.php
Код:<?
function resizeimg($filename, $smallimage, $w, $h, $q)
{
// нашёл в inete - автору Спасибо
// http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=5173
$ratio=$w/$h;
$size_img=getimagesize($filename);
$src_ratio=$size_img[0]/$size_img[1];
if($ratio<$src_ratio) $h=$w/$src_ratio;
else $w=$h*$src_ratio;
$dest_img=imagecreatetruecolor($w,$h);
$white=imagecolorallocate($dest_img, 255, 255, 255);
if($size_img[2]==2) $src_img=imagecreatefromjpeg($filename);
elseif($size_img[2]==1) $src_img=imagecreatefromgif($filename);
elseif($size_img[2]==3) $src_img=imagecreatefrompng($filename);
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
if($size_img[2]==2) imagejpeg($dest_img, $smallimage,$q);
elseif($size_img[2]==1) imagegif($dest_img, $smallimage,$q);
elseif($size_img[2]==3) imagepng($dest_img, $smallimage,$q);
imagedestroy($dest_img);
imagedestroy($src_img);
return true;
}
/////
// makethumb - берёт картинку из одного поля шаблона,изменяет размер,сохраняет в др.поле
// makethumb(номерШаблона,номерОбъекта,идПоляОткуда,идПоляКуда,ширина,высота,качество)
function makethumb($class,$message,$picFieldID,$thumbFieldID,$thumbWidth,$thumbHeight,$thumbQuality) {
$messageTable="Message".$class;
$thumbfieldname=listQuery("SELECT Field_Name FROM Field WHERE Field_ID=$thumbFieldID","$data[Field_Name]");
$picVirtName=listQuery("SELECT Virt_Name FROM Filetable WHERE Field_ID=$picFieldID AND Message_ID='$message'","$data[Virt_Name]");
if($picVirtName!='') {
//
//
// $DOCUMENT_ROOT="D:_NetCat_www";
//
//
$subCcPath=listQuery("SELECT File_Path FROM Filetable WHERE Field_ID=$picFieldID AND Message_ID='$message'","$data[File_Path]");
$picPath=$DOCUMENT_ROOT."/netcat_files".$subCcPath;
$thumbVirtName=md5($picVirtName.date("H:i:s d.m.Y").uniqid("netcat"));
resizeimg($picPath.$picVirtName,$picPath.$thumbVirtName, $thumbWidth, $thumbHeight,$thumbQuality);
if ($thumbMIME=@getimagesize($picPath.$thumbVirtName)) {
$thumbSize=@filesize($picPath.$thumbVirtName);
listQuery("UPDATE $messageTable SET $thumbfieldname='Thumb{$ii}:{$thumbMIME['mime']}:$thumbSize' WHERE Message_ID='$message'");
$prevThumbPath=listQuery("SELECT File_Path,Virt_Name FROM Filetable WHERE Message_ID=$message AND Field_ID=$thumbFieldID","$data[File_Path]$data[Virt_Name]");
if ("" != $prevThumbPath) {
unlink( $DOCUMENT_ROOT."/netcat_files".$prevThumbPath );
listQuery("DELETE FROM Filetable WHERE Message_ID=$message AND Field_ID=$thumbFieldID");
} //if prevPath
listQuery("INSERT INTO `Filetable` (`Real_Name` , `Virt_Name` , `File_Path` , `File_Type` , `File_Size` , `Message_ID` , `Field_ID` ) VALUES ('Thumb{$picFieldID}','$thumbVirtName','$subCcPath','{$thumbMIME['mime']}','$thumbSize','$message','$thumbFieldID')");
} //if thumbMIME
else echo "Маленькая картинка не_создана.
<br>Возможные причины:
<br>- Попытка добавить не картинку;
<br>- Ошибка в базе данных;<br>";
} // if
else /* echo "!!!!!!!!!! нет картинки<br>" */;
} // maketmb
?>
После добавления:
Код:";
// номера полей в шаблоне
$picFieldID=array(624,625,626); // Оригинальная картинка
$thumbFieldID=array(630,631,632); // Малая превьюка
$picBigFieldID=array(633,634,635); // Большая превьюшка
$class=61; //61 - num in genereal class list
for ($ii=0;$ii<3;$ii++) {
// makethumb - берёт картинку из одного поля шаблона,изменяет размер,сохраняет в др.поле
// makethumb(номерШаблона,номерОбъекта,идПоляОткуда,идПоляКуда,ширина,высота,качество)
// делай f_PicFull# -> f_PicBig#
makethumb($class,$message,$picFieldID[$ii],$picBigFieldID[$ii],460,346,85);
// делай f_PicBig# -> f_Thumb#
makethumb($class,$message,$picBigFieldID[$ii],$thumbFieldID[$ii],166,125,75);
} //for
echo "
<a href='/netcat/add.php?catalogue=$catalogue&sub=$sub&cc=$cc'>Ещё добавить</a>
<br><br>
<a href='/netcat/?catalogue=$catalogue&sub=$sub'>Продолжить редактирование раздела</a>
<br><br>
<a href='/index.php'>Выйти из режима добавления</a>
<br>
после изменения:
Код:";
$picFieldID=array(624,625,626); // $f_PicFull#
$thumbFieldID=array(630,631,632); // $f_Thumb#
$picBigFieldID=array(633,634,635); // $f_PicBig#
$class=61; //61 - num in genereal class list
for ($ii=0;$ii<3;$ii++) {
// makethumb - берёт картинку из одного поля шаблона,изменяет размер,сохраняет в др.поле
// makethumb(номерШаблона,номерОбъекта,идПоляОткуда,идПоляКуда,ширина,высота,качество)
// делай f_PicFull# -> f_PicBig#
makethumb($class,$message,$picFieldID[$ii],$picBigFieldID[$ii],460,346,85);
// делай f_PicBig# -> f_Thumb#
makethumb($class,$message,$picBigFieldID[$ii],$thumbFieldID[$ii],166,125,75);
} //for
echo "
<a href='/netcat/add.php?catalogue=$catalogue&sub=$sub&cc=$cc'>Добавить информацию</a>
<br><br>
<a href='/netcat/?catalogue=$catalogue&sub=$sub'>Продолжить редактирование раздела</a>
<br><br>
<a href='/index.php'>Выйти из режима изменения</a>
<br>
только одно мне странно - $DOCUMENT_ROOT - у меня пустая перменная, руками её прописывал и локально и на серваке.
Всего Доброго
|