Функция получения изображения из .bmp файлов для дальнейшего ресайза, конвертации и т.д
function imageCreateFromBMP($filename) {
if (! $f1 = fopen($filename,"rb"))
return false;
$FILE = unpack("vfile_type/Vfile_size/Vreserved/Vbitmap_offset", fread($f1,14));
if ($FILE['file_type'] != 19778)
return false;
$BMP = unpack(
'Vheader_size/Vwidth/Vheight/vplanes/vbits_per_pixel'.
'/Vcompression/Vsize_bitmap/Vhoriz_resolution'.
'/Vvert_resolution/Vcolors_used/Vcolors_important', fread($f1,40));
$BMP['colors'] = pow(2,$BMP['bits_per_pixel']);
if ($BMP['size_bitmap'] == 0)
$BMP['size_bitmap'] = $FILE['file_size'] - $FILE['bitmap_offset'];
$BMP['bytes_per_pixel'] = $BMP['bits_per_pixel']/8;
$BMP['bytes_per_pixel2'] = ceil($BMP['bytes_per_pixel']);
$BMP['decal'] = ($BMP['width']*$BMP['bytes_per_pixel']/4);
$BMP['decal'] -= floor($BMP['width']*$BMP['bytes_per_pixel']/4);
$BMP['decal'] = 4-(4*$BMP['decal']);
if ($BMP['decal'] == 4)
$BMP['decal'] = 0;
$PALETTE = array();
if ($BMP['colors'] < 16777216) {
$PALETTE = unpack('V'.$BMP['colors'], fread($f1,$BMP['colors']*4));
}
$IMG = fread($f1,$BMP['size_bitmap']);
$VIDE = chr(0);
$res = imagecreatetruecolor($BMP['width'],$BMP['height']);
$P = 0;
$Y = $BMP['height']-1;
while ($Y >= 0) {
$X=0;
while ($X < $BMP['width']) {
if ($BMP['bits_per_pixel'] == 24)
$COLOR = unpack("V",substr($IMG,$P,3).$VIDE);
elseif ($BMP['bits_per_pixel'] == 16) {
$COLOR = unpack("n",substr($IMG,$P,2));
$COLOR[1] = $PALETTE[$COLOR[1]+1];
} elseif ($BMP['bits_per_pixel'] == 8) {
$COLOR = unpack("n",$VIDE.substr($IMG,$P,1));
$COLOR[1] = $PALETTE[$COLOR[1]+1];
} elseif ($BMP['bits_per_pixel'] == 4) {
$COLOR = unpack("n",$VIDE.substr($IMG,floor($P),1));
if (($P*2)%2 == 0)
$COLOR[1] = ($COLOR[1] >> 4);
else
$COLOR[1] = ($COLOR[1] & 0x0F);
$COLOR[1] = $PALETTE[$COLOR[1]+1];
} elseif ($BMP['bits_per_pixel'] == 1) {
$COLOR = unpack("n",$VIDE.substr($IMG,floor($P),1));
if (($P*8)%8 == 0) $COLOR[1] = $COLOR[1] >>7;
elseif (($P*8)%8 == 1) $COLOR[1] = ($COLOR[1] & 0x40)>>6;
elseif (($P*8)%8 == 2) $COLOR[1] = ($COLOR[1] & 0x20)>>5;
elseif (($P*8)%8 == 3) $COLOR[1] = ($COLOR[1] & 0x10)>>4;
elseif (($P*8)%8 == 4) $COLOR[1] = ($COLOR[1] & 0x8)>>3;
elseif (($P*8)%8 == 5) $COLOR[1] = ($COLOR[1] & 0x4)>>2;
elseif (($P*8)%8 == 6) $COLOR[1] = ($COLOR[1] & 0x2)>>1;
elseif (($P*8)%8 == 7) $COLOR[1] = ($COLOR[1] & 0x1);
$COLOR[1] = $PALETTE[$COLOR[1]+1];
} else
return FALSE;
imagesetpixel($res,$X,$Y,$COLOR[1]);
$X++;
$P += $BMP['bytes_per_pixel'];
}
$Y--;
$P+=$BMP['decal'];
}
fclose($f1);
return $res;
}
p.s кто автор без понятия, нашел это в каком то движке
Нужен код для зачислении при каждом посте на форуме 1го балла.Джон 3.2.2.
_____
Не рекламь свой сайт
замени в forum/say.php
mysql_query("UPDATE `users` SET `balans`='" . ($datauser['balans'] + 1) . "' ,`postforum`='" . ($datauser['postforum'] + 1) . "', `lastpost` = '$realtime' WHERE `id` = '$user_id'");
Функция отображния времени добавленного сообщения как в социальных сетях
$time_difference = time() - $session_time;
$seconds = $time_difference;
$minutes = round($time_difference / 60 );
$hours = round($time_difference / 3600 );
$days = round($time_difference / 86400 );
$weeks = round($time_difference / 604800 );
$months = round($time_difference / 2419200 );
$years = round($time_difference / 29030400 );
if($seconds <= 60) {// Секунды
echo "$seconds секунд назад";
} else if($minutes <=60) {// Минуты
if($minutes==1) {
echo "одну минуту назад";
} else {
echo "$minutes минут назад";
}
} else if($hours <=24) {// Часы
if($hours==1) {
echo "один час назад";
} else {
echo "$hours часов назад";
}
} else if($days <= 7) {// Дни
if($days==1) {
echo "один день назад";
} else {
echo "$days дней назад";
}
} else if($weeks <= 4) {// Недели
if($weeks==1) {
echo "одну неделю назад";
} else {
echo "$weeks недель назад";
}
} else if($months <=12) {// Месяцы
if($months==1) {
echo "один месяц назад";
} else {
echo "$months месяцев назад";
}
} else {
if($years==1) {
echo "один год назад";
} else {
echo "$years года\лет назад";
}
}
}
//Пример использования
$session_time = time() - 3600;
echo time_stamp($session_time);
L!MP, Так не проще:
/*
-----------------------------------------------------------------
Правильные окончания
-----------------------------------------------------------------
*/
function completions($str = '', $array = '')
{
$rest = substr($str, -1);
if ($rest == 1) {
$out = $array[0];
} else
if ($rest == 1 or $rest == 2 or $rest == 3 or $rest == 4) {
$out = $array[1];
} else {
$out = $array[2];
}
return $out;
}
Пример:
echo completions($count, array('сообщение', 'сообщения', 'сообщений'));
Regan, получается Котеров, дурачек
L!MP (15.03.2011/00:52)
Regan, получается Котеров, дурачек
Мне кажется он просто забатанился?
Krite, подскажите как добавить функцию отображния времени добавленного сообщения как в социальных сетях в форум 3.2.2
// Время поста
echo ' <span class="gray">(' . date("d.m.Y / H:i", $res['time'] + $set_user['sdvig'] * 3600) . ')</span><br />';
если например функцию назвать timehooli...
Regan (14.03.2011/23:47)
L!MP, Так не проще:
[php]/*
-----------------------------------------------------------------
Правильные окончания
-----------------------------------------------------------------
*/
function
Данная функция не верна! Она не правильно отображает количество от 12 до 14! Не гоните на Котерова. И не надо удалять мои сообщения по сабжу!!!