- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
есть скрипт создания демотиваторов
скрипт скачал отсюда - http://uvsr.stu.ru/dm/root_dm.zip и немного поменял под себя
работает он как тут - http://uvsr.stu.ru/dm/dm_create.php
при выводе на экран картинки сохранить ее на комп нельзя, только в формате хтмл страници...
подскажите как исправить данную проблему
а вот мой скрипт:
<?php
include ("dm.php");
// Печать демотиватора на экран
if (isset($_GET['dm'])) {
session_start();
$filename = $_SESSION['dm_fname'];
$slogan1 = $_SESSION['dm_slogan1'];
$slogan2 = $_SESSION['dm_slogan2'];
demotivator($filename,$slogan1,$slogan2);
unlink($filename);
exit;
}
// HTML-форма на экран
if (!isset($_POST["ok"])) {
print '<form action="dm_create.php" method="post" enctype=multipart/form-data>
<b>Изображение: </b><input type="file" name="filename"><br>
<b>1-й слоган: </b><input type="text" name="slogan1"><br>
<b>2-й слоган: </b><input type="text" name="slogan2"><br>
<input type="submit" name="submit" value="Создать демотиватор">
<input type="hidden" name="ok"></form>';
} else {
// Сохранение данных в сессии
session_start();
$_SESSION['dm_slogan1'] = $_POST['slogan1'];
$_SESSION['dm_slogan2'] = $_POST['slogan2'];
// Выбираем имя для файла
$fname = "";
for($x=0;$x<3;$x++) $fname = $fname.mt_rand(0,9);
$fname = $fname.".jpg";
copy ($_FILES['filename']['tmp_name'], "$fname");
$_SESSION['dm_fname'] = "$fname" ;
}
print '<html><title>Создание Демотиватора</title><body><h1>Ваш Демотиватор</h1><img src="dm_create.php?dm"><br><br><big>Если демотиватор отображается некорректно, например слоганы не вмещаются в изображение, значит слоганы слишком длинные. Если демотиватор не отображается, значит был загружен неподдерживаемый формат файла (должен быть JPG, GIF, PNG, BMP).</big><br><br>';
print '<form action="dm_create.php" method="post" enctype=multipart/form-data>
<b>Изображение: </b><input type="file" name="filename"><br>
<b>1-й слоган: </b><input type="text" name="slogan1"><br>
<b>2-й слоган: </b><input type="text" name="slogan2"><br>
<input type="submit" name="submit" value="Создать демотиватор">
<input type="hidden" name="ok"></form></body></html>';
?>
<?php
function demotivator($image, $slogan1, $slogan2) {
$fon = imagecreatefromjpeg('fon.jpg');
// преобразование win в utf
$slogan1 = dm_win2utf($slogan1);
$slogan2 = dm_win2utf($slogan2);
$ext = getimagesize($image);
// Открываем изображение
switch($ext[2]) {
case 2: {$img = ImageCreateFromJPEG($image); break;}
case 1: {$img = ImageCreateFromGIF($image); break; }
case 3: {$img = ImageCreateFromPNG($image); break;}
case 6: {$img = ImageCreateFromBMP($image); break;}
default : {
unlink ($image);
return 2;
}
}
// Получение размеров изображения
$x = ImageSX($img); // X
$y = ImageSY($img); // Y
//изменяем размер изображения до необходимого
if ($x<>725) {
$img3 = ImageCreateTrueColor(725, floor($y*725/$x));
$black = ImageColorAllocate($img3, 0, 0, 0);
ImageCopyResized($img3, $img, 0, 0, 0, 0, 725, floor($y*725/$x), $x, $y);
} else {
ImageCopyResized($img3, $img, 0, 0, 0, 0, $x, $y, $x, $y);
}
$x = ImageSX($img3); // X
$y = ImageSY($img3); // Y
$ny=$y+171;
$iy = 0;
if ($y>722) {
$iy = floor(($y-722)/2);
$ny=893;
}
// Создаем новое изображение
$img2 = ImageCreateTrueColor (842, $ny);
$black = ImageColorAllocate($img2, 0, 0, 0);
//подставляем фон для демотиватора
ImageCopyResized($img2, $fon, 0, 0, 0, 0, 842, $ny, 842, $ny);
//вставляем изображение на демотиватор
ImageCopyResized($img2, $img3, 58, 58, 0, $iy, $x, $y-2*$iy, $x,$y-$iy);
// Цвета рамки, слоганов и копирайта
$col = ImageColorAllocate($img2, 255, 255, 255); // Цвет слоганов
$col3 = ImageColorAllocate($img2, 255, 255, 255); // Цвет рамки
// Получение размеров изображения
$x = ImageSX($img2); // X
$y = ImageSY($img2); // Y
// Рамки на изображении
ImageRectangle($img2, 53, 53, 787, $y - 108, $col3);
ImageRectangle($img2, 52, 52, 788, $y - 109, $col3);
// Получение размеров изображения
$x = ImageSX($img3); // X
$y = ImageSY($img3); // Y
// Размер черного прямоугольника, который будем рисовать
$tx = $x * 0.1;
$ty = $x * 0.1;
$bx = $x + $tx;
$by = $y + $ty;
$dx= $x * 0.01; // Смещение. Необходимо для рисования рамки
$dy= $x * 0.01;
// Расчет смещений для рисования рамки
$x1 = $tx;
$y1 = $ty;
$x2 = $bx;
$y2 = $y + $ty;
// Пишем слоганы, сначала с X=0, чтобы получить линейные размеры текста
$s1 = ImageTTFText($img2, 0.04 * $bx, 0, $dx, $y+1000, $col, "times.ttf", $slogan1);
$s2 = ImageTTFText($img2, 0.030 * $bx, 0, $dx, $y+1000, $col, "arial.ttf", $slogan2);
// 1-й слоган не помещается в картинку - ошибка!
if (($s1[2] - $s1[0]) > $bx + $tx) $sl1 = 1;
$dx = (($bx + $tx) - ($s1[2] - $s1[0]))/2; // Смещение. Эта величина определяет центровку текста для 1-го слогана
// Непосредственно текст. 1-й слоган
ImageTTFText($img2, 0.04 * $bx, 0, $dx, $y+120, $col, "times.ttf", $slogan1);
$dx = (($bx + $tx) - ($s2[2] - $s2[0]))/2; // Смещение. Эта величина определяет центровку текста для 2-го слогана
// Непосредственно текст. 2-й слоган (таглайн)
if ($dx < 0) {
// Текст не умещается в картинку, масштабируем.
$s = $s2[2] - $s2[0];
$size = (0.030 * $bx * $bx) /$s;
$s2 = ImageTTFText($img2, $size, 0, $dx, $by + $ty + 0.08 * $bx, $col, "arial.ttf", $slogan2);
$dx = (($bx + $tx) - ($s2[2] - $s2[0]))/2;
ImageTTFText($img2, $size, 0, $dx, $by + $ty + 0.08 * $bx, $col, "arial.ttf", $slogan2);
} else {
$size = 0.030 * $bx;
ImageTTFText($img2, $size, 0, $dx, $y+160, $col, "arial.ttf", $slogan2);
}
Imagejpeg($img2);
ImageDestroy($img2);
ImageDestroy($img);
ImageDestroy($img3);
ImageDestroy($fon);
return 0;
}
// =========================================================================
// =========================================================================
// Преобразование win-1251 в UTF-8
// Взято с сайта: www.php.net, Автор: SiMM
function dm_win2utf($string){
if (function_exists("iconv")) {
$string = iconv("Windows-1251","UTF-8",$string);
return $string;
} else {
$out = '';
for ($i = 0; $i<strlen($string); ++$i){
$ch = ord($string{$i});
if ($ch < 0x80) $out .= chr($ch);
else
if ($ch >= 0xC0)
if ($ch < 0xF0)
$out .= "\xD0".chr(0x90 + $ch - 0xC0); // ***1040;-***1071;, ***1072;-***1087; (A-YA, a-p)
else $out .= "\xD1".chr(0x80 + $ch - 0xF0); // ***1088;-***1103; (r-ya)
else
switch($ch){
case 0xA8: $out .= "\xD0\x81"; break; // YO
case 0xB8: $out .= "\xD1\x91"; break; // yo
// ukrainian
case 0xA1: $out .= "\xD0\x8E"; break; // ***1038; (U)
case 0xA2: $out .= "\xD1\x9E"; break; // ***1118; (u)
case 0xAA: $out .= "\xD0\x84"; break; // ***1028; (e)
case 0xAF: $out .= "\xD0\x87"; break; // ***1031; (I..)
case 0xB2: $out .= "\xD0\x86"; break; // I (I)
case 0xB3: $out .= "\xD1\x96"; break; // i (i)
case 0xBA: $out .= "\xD1\x94"; break; // ***1108; (e)
case 0xBF: $out .= "\xD1\x97"; break; // ***1111; (i..)
// chuvashian
case 0x8C: $out .= "\xD3\x90"; break; // ***1232; (A)
case 0x8D: $out .= "\xD3\x96"; break; // ***1238; (E)
case 0x8E: $out .= "\xD2\xAA"; break; // ***1194; (SCH)
case 0x8F: $out .= "\xD3\xB2"; break; // ***1266; (U)
case 0x9C: $out .= "\xD3\x91"; break; // ***1233; (a)
case 0x9D: $out .= "\xD3\x97"; break; // ***1239; (e)
case 0x9E: $out .= "\xD2\xAB"; break; // ***1195; (sch)
case 0x9F: $out .= "\xD3\xB3"; break; // ***1267; (u)
}
}
return $out;
}
}
// =========================================================================
?>
Попробуйте добавить:
header('Content-type: image/jpeg']);
вот здесь:
// Печать демотиватора на экран
if (isset($_GET['dm'])) {
session_start();
$filename = $_SESSION['dm_fname'];
$slogan1 = $_SESSION['dm_slogan1'];
$slogan2 = $_SESSION['dm_slogan2'];
header('Content-type: image/jpeg']);
demotivator($filename,$slogan1,$slogan2);
unlink($filename);
exit;
}
П.С.
Хочется особо отметить, вот как надо задавать вопросы! Максимум информации, всё что может понадобиться для решения проблемы. За решение такой задачи приятно браться, и такому спрашивающему приятно отвечать :-)
выдает вот такую ошибку - "Parse error: parse error in C:\web_server\Apache\htdocs\dm_create.php on line 19"
Прикрепите пожалуйста сюда этот файл dm_create.php (запакуйте зипом), чтобы можно было увидеть, что там на 19 строке и рядом.
я в ПХП новичек... так что помогите пожалуйста)))
---------- Добавлено 12.07.2012 в 11:01 ----------
архив можно забрать здесь - http://www.ex.ua/view_storage/527470704197
header('Content-type: image/jpeg');// скобка квадратная лишняя былаp.s. по поводу простыни кода.. очень спорно
Извиняюсь, моя ошибка, строка 19 должна быть такой:
header('Content-type: image/jpeg');
(я там лишнюю ] брякнул)
огромное спасибо)
все работает прекрасно)))
____________________
я ведь только учусь)))
есть еще одна проблема!!!
браузер Google Chrome сохраняет изображение, но открыть его невозможно
попробывал открыть как текст и вот что увидел:
<br />
<b>Warning</b>: getimagesize(375.jpg) [<a href='function.getimagesize'>function.getimagesize</a>]: failed to open stream: No such file or directory in <b>C:\web_server\Apache\htdocs\dm.php</b> on line <b>11</b><br />
<br />
<b>Warning</b>: unlink(375.jpg) [<a href='function.unlink'>function.unlink</a>]: No such file or directory in <b>C:\web_server\Apache\htdocs\dm.php</b> on line <b>21</b><br />
<br />
<b>Warning</b>: unlink(375.jpg) [<a href='function.unlink'>function.unlink</a>]: No such file or directory in <b>C:\web_server\Apache\htdocs\dm_create.php</b> on line <b>18</b><br />
что это может быть и как это исправить?
---------- Добавлено 13.07.2012 в 14:57 ----------
последняя версия скрипта здесь - http://www.ex.ua/view_storage/666126832452
---------- Добавлено 13.07.2012 в 14:59 ----------
в Opera и IE все работает....
Включать вывод ошибок и предупреждений нужно чтобы такого не было. Скорее всего проблема в правах, либо в отсутствии файлов
Проблема в том, что в отличие от ИЕ и Оперы, Хром почему-то при сохранении картинки не берёт её из собственного кеша, а запрашивает заново с сервера. Я добавил ещё пару заголовков, чтобы сказать хрому, чтобы он не был таким щепитильным, и использовал кеш для картинки в течение часа. В прикриплении изменённый dm_create.php. На моём локальном компе вроде заработало в хроме.