18 дек. 2008 г.

Социалка

Что это: Плакат-табличка;
Зачем это: Для стимуляции пробуждения совести;
Что с этим делать:
- разместить у себя в дневнике;
- распечатать и прикрепить в нужном месте;




10 дек. 2008 г.

PHP+GD: масштабирование изображений

частенько перед программистом стоит задача масштабирования загруженной пользователем картинки...

обычно используют масштабирование до "предельного прямоугольника". например, вот так:

но иногда необходимо получить картинку с чётко заданными шириной и высотой. и не обязательно будет совпадать расположение картинки до и после обработки (вертикально/горизонтально). например, вот так:


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

тем не менее, часто бывает достаточно такого правила: если у нас портальное размещение изображения, то обрезка идёт от центра, если же положение изображения вертикальное - то обрезка делается по верхнему краю

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

сперва хотел всё расписать и прокомментировать...
а потом передумал )))
кому надо - сам поймёт. ну или спросит ;)

function imgCropResize($s_src, $s_dest, $i_th_width, $i_th_height)
{
// 0)
$a_img_size = getimagesize($s_src);
$i_curr_width = $a_img_size[0];
$i_curr_height = $a_img_size[1];

// 1)
$Ww = $i_curr_width/$i_th_width;
$Hh = $i_curr_height/$i_th_height;

if ( $Ww > $Hh )
{
$r_min = $Hh;
}
else
{
$r_min = $Ww;
}

// 2)
$i_crop_width = round($i_th_width * $r_min);
$i_crop_height = round($i_th_height * $r_min);

if ($i_curr_width == $i_crop_width)
{
$i_start_x = 0;
$i_tn_width = $i_crop_width;

$i_start_y = 0;
$i_tn_height = $i_crop_height;
}
else
{
$i_start_y = 0;
$i_tn_width = $i_crop_width;

$i_start_x = ($i_curr_width - $i_crop_width)/2;
$i_tn_height = $i_crop_height;
}

// 3)
$img_src1 = imagecreatefromjpeg($s_src);
$img_dst1 = imagecreatetruecolor($i_tn_width, $i_tn_height);

imagecopyresampled($img_dst1, $img_src1, 0, 0, $i_start_x, $i_start_y, $i_tn_width, $i_tn_height, $i_crop_width, $i_crop_height);

imagedestroy($img_src1);

// 4)
$i_curr_width = $i_tn_width;
$i_curr_height = $i_tn_height;

$r_x_ratio = $i_th_width / $i_curr_width;
$r_y_ratio = $i_th_height / $i_curr_height;

if ( ($i_curr_width <= $i_th_width) && ($i_curr_height <= $i_th_height) )
{
$i_tn_width = $i_curr_width;
$i_tn_height = $i_curr_height;
}
elseif (($r_y_ratio * $i_curr_width) < $i_th_width)
{
$i_tn_width = round($r_y_ratio * $i_curr_width);
$i_tn_height = $i_th_height;
}
elseif (($r_x_ratio * $i_curr_height) < $i_th_height)
{
$i_tn_height = round($r_x_ratio * $i_curr_height);
$i_tn_width = $i_th_width;
}
else
{
$i_tn_width = ceil($r_y_ratio * $i_curr_width);
$i_tn_height = $i_th_height;
}

// 5)
$img_src2 = $img_dst1;
$img_dst2 = ImageCreateTrueColor($i_tn_width, $i_tn_height);

imagecopyresampled($img_dst2, $img_src2, 0, 0, 0, 0, $i_tn_width, $i_tn_height, $i_curr_width, $i_curr_height);

imagejpeg($img_dst2, $s_dest, 100);
imagedestroy($img_src2);
imagedestroy($img_dst2);
}

пример вызова:
imgCropResize('2.jpg', '2_th.jpg', 100, 200);
вот как-то так ...

6 дек. 2008 г.

No comments

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

Более того, как выяснилось, часть моих коллег именно из-за этого даже открывать не хочет свои странички. Я их понимаю – в комментах попадаются редкие ублюдки, и их надо воспитывать.

Разумеется эта публикация никак не касается, тех комментаторов, которых интересно читать и которые владеют комментируемой темой. Но таких чрезвычайно мало – в большинстве случае в «камментах срут» инфальтильные очкарики, средней руки менеджеры, скучающие пиарщики-неудачники и прочий офисный планктон.

Таким как они уже за тридцать. Работа – гавно, начальник-гавно, страна, разумеется, тоже гавно (практически по «Сукиным детям» Филатова»). Но ведь стране, а тем более начальнику, этого не скажешь. Что делать? Срать! Куда срать? В камменты! Где нет премодерации в Уанете? Да везде!

Анонимные комментаторы (анонимные - от известного слова) достали и моих коллег из авторитетной Телекритики . Высказалась по этому поводу в материале «Без комментариев!» и колумнистка издания Вера Мериканец. Ну это так - для создания референтной группы.

Теперь переходим, собственно, к холодным блюдам.

Итак, проведя несколько часов в изучении наскального творчество комментаторов я сделал вывод, что типичный комментатор блогов - это человек который:

1. Думает, что маты – это стеб
2. Думает, что евреи всегда отвечают вопросом на вопрос, что украинцы – это жрущие сало хохлы, а русские – это пьющие водку кацапы.
3. Думает, что миром правят масоны и что все кризисы в мировой экономике предсказал Нострадамус
4. Думает, что фильм «Дух времени» - «нужно посмотреть всем обязательно и все станется понятно»
5. Думает, что «в России президент – настоящий мужик, а в Украине прыщавый мазурик»
6. Думает, что он лучше всех разбирается в экономике и политике, и «что всех надо подвесить за яйца».
7. Думает, что заменять букву «ч» цифрой «4» - это модно, а «3,14здец» - это верх интеллектуальности
8. Думает, что «памятники Ленина – это история и пусть стоят»
9. Думает, что «украинские националисты – это фашисты, а российские фашисты – это патриоты»
10. Думает, что «если в Верховной Зраде все были бы нармальные, то и жисть лучче была бы»
11. Думает, что «на Банковой сидит биоробот, настоящего Ющенко убили еще в 2004-м»
12. Думает, что «бу-га-га» - это тонкая ирония
13. Думает, что он думает.

Кушайте, не обляпайтесь!

В следующем блоге разговор на тему «Как отличить комментаторов от инъекционных наркоманов? Авторские методики и рецепты читателей. Лабораторное занятие для инвалидов первой группы".

Комментарии под эту запись, если их будет больше десяти постов, покажут меткость приведенных определений зоологии «комментатора обычного».

Если же комментов будет меньше десяти, то наоборот - данное исследование произвело неизгладимый воспитательный эффект и теперь все дружно комментируют в корпоративных туалетах.

Но учтите - от этого, говорят, слепнут!

Internet Map