
Быстрый поиск
Введите фрагмент названия статьи для поиска
Просто добавь воды?
22.07.2009 | Категория: Всякая всячина | Автор: ManHunter

Вода кристаллическая
Сегодня купил в ларьке бутылку воды. Пока разглядывал тару, взгляд зацепился за этикетку, а мозг дал сигнал, что в названии что-то не то. Может подсказать производителям этого чуда, что "кристаллическая вода" - это по сути обычный лед, и питьевым он быть не может :)
Просмотров: 3521 | Комментариев: 6
Исследование защиты программы TopStyle 4
21.07.2009 | Категория: Темная сторона Силы | Автор: ManHunter

Скриншот программы TopStyle 4
TopStyle - лучшая программа для работы с каскадными таблицами стилей CSS. Предоставляет разработчику такие мощные инструменты, как автодополнение, предпросмотр стилей во встроенном браузере, валидацию стилей, поддержку юникода, позволяет обновлять стили прямо на сервере и совместима со всеми современными браузерами. Но раз программа появилась в этом разделе, значит у нее все-таки есть недостатки. Она требует регистрацию, естественно, за некоторую сумму денег.
Читать статью целиком »
Просмотров: 6681 | Комментариев: 13
Нанесение графических водяных знаков на изображение
13.07.2009 | Категория: Web-мастеру и не только | Автор: ManHunter
Наносить текстовые надписи на картинки средствами PHP мы уже умеем. Теперь рассмотрим как делать то же самое, только на этот раз вместо текста будет графический маркер. Сам маркер представляет собой картинку в формате PNG-8 (глубина цвета - 8 бит), допускается прозрачность и произвольная форма. Если маркер будет с другой глубиной цвета, то при наложении прозрачный цвет будет заменен на черный. Другой формат маркеров не поддерживается! Файл PNG определяется по расширению, можно анализировать внутреннюю структуру, но это, наверное, в данном случае лишнее и остается на совести вебмастера.Code (PHP) : Убрать нумерацию
- //-------------------------------------------------------------------
- // Функция нанесения графического водяного знака на изображение
- // Copyright (C) ManHunter / PCL
- // http://www.manhunter.ru
- //-------------------------------------------------------------------
- // Параметры вызова:
- // $picture - путь к файлу картинки на сервере
- // $marker - путь к файлу водяного знака на сервере
- // $opacity - процент прозрачности
- // $watermark_position - положение водяного знака на картинке
- //-------------------------------------------------------------------
- // Константы положения водяного знака на картинке
- define ("WATERMARK_LEFT_BOTTOM",0);
- define ("WATERMARK_LEFT_TOP",1);
- define ("WATERMARK_RIGHT_BOTTOM",2);
- define ("WATERMARK_RIGHT_TOP",3);
- define ("WATERMARK_CENTER",4);
- function Watermark_PNG_Image($picture, $marker, $opacity=100,
- $watermark_position=WATERMARK_RIGHT_BOTTOM) {
- // Проверки на наличие файлов и допустимые параметры
- if (!file_exists($picture)) { return false; }
- if (!file_exists($marker)) { return false; }
- // Получить размеры исходного изображения
- list ($sx,$sy)=GetImageSize($picture);
- if ($sx==0 || $sy==0) { return false; }
- // Получить размеры маркера
- list ($mx,$my)=GetImageSize($marker);
- if ($mx==0 || $my==0 || $sx<($mx+20) || $sy<($my+20)) { return false; }
- // Если расширение маркера не .PNG, то выход с ошибкой
- if (strtolower(substr($marker,-4))!=".png") { return false; }
- // Если расширения нет, то выход с ошибкой
- $pocket=Array();
- eregi("\.([a-z]*)$",$picture,$pocket);
- if ($pocket[1]=="") { return false; }
- // На основании расширения создать картинку
- switch (strtolower($pocket[1])) {
- case "jpeg":
- case "jpg": {
- if (!$im=@ImageCreateFromJpeg($picture)) { return false; }
- break;
- }
- case "gif": {
- if (!$im=@ImageCreateFromGif($picture)) { return false; }
- break;
- }
- case "png": {
- if (!$im=@ImageCreateFromPng($picture)) { return false; }
- break;
- }
- default: { return false; }
- }
- // Получить координаты блока на картинке для нанесения надписи
- switch ($watermark_position) {
- case WATERMARK_LEFT_BOTTOM: {
- $pos_x=10;
- $pos_y=$sy-$my-10;
- break;
- }
- case WATERMARK_RIGHT_BOTTOM: {
- $pos_x=$sx-$mx-10;
- $pos_y=$sy-$my-10;
- break;
- }
- case WATERMARK_LEFT_TOP: {
- $pos_x=10;
- $pos_y=10;
- break;
- }
- case WATERMARK_RIGHT_TOP: {
- $pos_x=$sx-$mx-10;
- $pos_y=10;
- break;
- }
- case WATERMARK_CENTER: {
- $pos_x=intval($sx/2-$mx/2);
- $pos_y=intval($sy/2-$my/2);
- break;
- }
- default: {
- imageDestroy($im);
- return false;
- }
- }
- // Нанести водяной знак с нужной прозрачностью
- $watermark=@ImageCreateFromPng($marker);
- ImageCopyMerge($im, $watermark, $pos_x, $pos_y, 0, 0, $mx, $my, $opacity);
- ImageDestroy($watermark);
- // Записать измененный файл на место
- switch (strtolower($pocket[1])) {
- case "jpeg":
- case "jpg": {
- ImageJPEG($im,$picture,90);
- break;
- }
- case "gif": {
- ImageGIF($im,$picture);
- break;
- }
- case "png": {
- ImagePNG($im,$picture);
- break;
- }
- }
- ImageDestroy($im);
- return true;
- }
Читать статью целиком »
Просмотров: 9624 | Комментариев: 13
Фестиваль цветников "За молодежью - будущее"
12.07.2009 | Категория: Жизнь в оффлайне | Автор: ManHunter

Фестиваль цветников "За молодежью - будущее"
Сегодня на улице стоит отличная погода, поэтому я решил съездить в Природно-исторический парк "Кузьминки-Люблино" на Фестиваль цветников. Как обычно, с фотоаппаратом. Заодно получше исследую сам парк, а то еще ни разу там не был.
Читать статью целиком »
Просмотров: 6405 | Комментариев: 5
Гиперссылки в диалоговых окнах на Ассемблере
11.07.2009 | Категория: Образ мышления: Assembler | Автор: ManHunter

Гиперссылки в диалоговых окнах на Ассемблере
Создание текстовой гиперссылки в диалоговом окне, казалось бы, простая задача. Но дело в том, что в Windows по умолчанию нет элементов диалоговых окон, которые бы выполняли роль гиперссылки. Готовых решений на FASM тоже не нашлось, значит придется создавать такой элемент самостоятельно. Сперва определимся с задачами, что нам надо сделать. Должен получиться элемент диалогового окна в виде текста определенного цвета, при наведении на который курсор должен менять свою форму, а цвет изменяться на подсвеченный. При клике на такой элемент должна открываться заданная ссылка. Задачи ясны, начнем их решать. Сперва выберем элемент диалоговых окон из списка стандартных, который и будет использоваться в качестве гиперссылки. Сразу же приходит на ум STATIC. По умолчанию элемент класса STATIC полностью оправдывает свое название и не реагирует практически ни на какие сообщения. Чтобы STATIC принимал движение курсора и нажатия клавиш мышки, его надо описать в ресурсах с флагом стилей SS_NOTIFY.
Читать статью целиком »
Просмотров: 7287 | Комментариев: 6

