0 Пользователей и 1 Гость просматривают эту тему.
  • 54 Ответов
  • 8704 Просмотров
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Здравствуйте!

Вот появилась идейка модифицировать DG v.1.8.3 вот таким наворотом - хочу чтобы при обработке загружаемого изображения получался т.н. демотиватор. т.е. чтобы изображение накладывалось на черный фон (естественно больший чем само изображение) а текст из полей "заголовок" и "описание" помешался на черном фоне белыми буквами выше (поле "заголовок") изображения и ниже изображения (поле "описание")

есть рабочий скрипт на php который собственно и воплощает данный функционал.

нуждаюсь в помощи такого характера:

1. определить скрипт обработки загружаемого изображения (предполагаю что это  images.datsogallery.php из директории administrator/components/com_dastogallery).

2. определить имена переменных, которым присвоено значение из форм.

3. определить имя переменной которой присвоено значение имени файла и/или его размещение (tmp?)
4. ВАЖНО! чтобы скрипт выполнялся до того как создаются оригинал и тумбы (превью) - чтобы в папки галереи раскидывалось уже измененное скриптом изображение.

возможно нужна дополнительная инфа скрипту,(возможно есть лишее в скрипте и тд. и тп.) если кто заметит свежим взглядом - буду признателен)

заранее благодарен за любую помощь или совет))

с ув. Yseff K.

P.S.
помнится мне раньше свободнораспространяемые исходники были с комментариями (сам такие делал ^-^) и всем было счастье, а сейчас...... :( *WALL*
« Последнее редактирование: 24.02.2010, 03:06:03 от Yseff »
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
к сожалению так и не нашел как тут прикрепить файл, по этому прошу прощения у модераторов заранее))

Код
//предполагается что путь к файлу и текст из форм - константы
$fontFolder = dirname(__FILE__)  . "/";
//$fontName = dirname(__FILE__)  . "/verdana.ttf";
  $fontExt = ".ttf";
  $headerFont = "times";
  $headerSize = 32.5;
  $textFont = "arial";
  $textSize = 24.0;
 
  $imageMargin = 20;
  $spacing = 16;
  $borderPad = 16;


$srcFile = dirname(__FILE__)  . "/".$_FILES['uploadfile']['name'];
  $header = iconv("CP1251", "UTF-8", $comment1);
  $text = iconv("CP1251", "UTF-8", $comment2);
 echo $srcFile;

  if( !file_exists( $srcFile ) ){
    echo "picture file not found\n";
    exit;
  }
 
  $img = imagecreatefromjpeg( $srcFile );
  list($w, $h) = getimagesize( $srcFile );
 
  $ha1 = imagettfbbox($headerSize, 0, $fontFolder.$headerFont.$fontExt, $header );
  $ha2 = imagettfbbox($textSize, 0, $fontFolder.$textFont.$fontExt, $text );
 
  $wt1 = $ha1[2]-$ha1[0];
  $ht1 = $ha1[1]-$ha1[7];
  $wt2 = $ha2[2]-$ha2[0];
  $ht2 = $ha2[1]-$ha2[7];
 
  $fw = $w + 8 + $imageMargin * 2 + $borderPad * 2;
  $fh = $h + 8 + $imageMargin * 2 + $borderPad * 2 + $ht1 + $ht2 + $spacing * 3;
  $fon = imagecreatetruecolor($fw, $fh);
 
  $white = imagecolorallocate( $fon, 255, 255, 255 );
  $black = imagecolorallocate( $fon,   0,   0,   0 );
  imagefill( $fon, 0, 0, $black );
 
  imagecopy( $fon, $img, $imageMargin + $borderPad + 4, $imageMargin + $borderPad + 4, 0, 0, $w, $h );
 
  imagerectangle( $fon, $imageMargin + $borderPad + 4 - 3, $imageMargin + $borderPad + 4 - 3,
           $imageMargin + $borderPad + $w + 4 + 2, $imageMargin + $borderPad + $h + 4 + 2, $white );
  imagerectangle( $fon, $imageMargin + $borderPad + 4 - 4, $imageMargin + $borderPad + 4 - 4,
           $imageMargin + $borderPad + $w + 4 + 3, $imageMargin + $borderPad + $h + 4 + 3, $white );
 
  imagettftext( $fon, $headerSize, 0,
    ($fw - $wt1) / 2, $imageMargin + $borderPad*2 + 8 + $h + $ht1 + $spacing,
    $white, $fontFolder.$headerFont.$fontExt, $header );
 
  imagettftext( $fon, $textSize, 0,
    ($fw - $wt2) / 2, $imageMargin + $borderPad*2 + 8 + $h + $ht1 + $ht2 + $spacing*2,
    $white, $fontFolder.$textFont.$fontExt, $text );
 
  imagejpeg( $fon, $_FILES['uploadfile']['name'], 98 );
  imagecolordeallocate( $fon, $black );
  imagecolordeallocate( $fon, $white );
  imagedestroy( $fon );

}
else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }

// Выводим информацию о загруженном файле

P.S.
скрипт не работает на denver без GD и еще чегото (imagemagic?)

и еще - если я изобретаю велосипед и уже существует подобное решение (модуль/плагин) для этой галереи - прошу не пинать (по возможности указать линк) я в cms Joomla новичек.(до этого писал простенькие одностраничные сайты на php)
« Последнее редактирование: 24.02.2010, 03:01:44 от Yseff »
*

Peroon

  • Захожу иногда
  • 247
  • 11 / 1
  • http://textonix.ru
Лучше установи GD, по версии ГД можно уже курить мануал по поводу вставки текста и прочего.

IM немного прикольнее, но тяжеловеснее для сервака.
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Лучше установи GD, по версии ГД можно уже курить мануал по поводу вставки текста и прочего.

IM немного прикольнее, но тяжеловеснее для сервака.

сам по себе скрипт у меня работает. я прикрутил формы и upload к нему и все ок. я же хочу чтобы он был несам по себе а в составе DG.
 тут именно идея не писать с нуля всю галерею а модифицировать имеющуюся)))
*

Peroon

  • Захожу иногда
  • 247
  • 11 / 1
  • http://textonix.ru
Если я правильно понял, то вам нужно просто изменять имагу при конвертировании в галерею... тут ничего переписывать ненадо, просто добавить скрипт. Увы, но без этого никуда (((
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Если я правильно понял, то вам нужно просто изменять имагу при конвертировании в галерею... тут ничего переписывать ненадо, просто добавить скрипт. Увы, но без этого никуда (((

правильно вы меня поняли))) я вот выспался и начал работать дальше скрипт с именем image.datsogallery.php как раз этим и занимается, осталось его дополнить моим скриптом демотиваторов (чем я щас и занимаюсь) единственное что осталось непонятным - каким переменным присвоено значение из форм "заголовок" и "описание"((
*

Peroon

  • Захожу иногда
  • 247
  • 11 / 1
  • http://textonix.ru
Это смаря где... в админке или во фронте
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Это смаря где... в админке или во фронте

во фронте (надеюсь скрипт изменения фото одинаков для админки и для фронта?)

еще стало актуально найти скрипт работающий с текстом (функция?)
*

Peroon

  • Захожу иногда
  • 247
  • 11 / 1
  • http://textonix.ru
Они разные и лежат в разных файлах.
Бери скрипт из админки, вставляй его во фронт и его уже корежь.
В админке нет пары досадных глюков и сделан он толковее.
Во фронте с переменными проще, просто посмотри как они обзываются в самой HTML форме. в DG пишется в базу напрямую значения из POST
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
еще интересно что за переменные  $destfile, $ad_thumbquality  и $ad_crsc ?
« Последнее редактирование: 24.02.2010, 18:51:07 от Yseff »
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Бери скрипт из админки, вставляй его во фронт и его уже корежь.


как он зовется (во фронте который)?
*

Peroon

  • Захожу иногда
  • 247
  • 11 / 1
  • http://textonix.ru
Врать не буду, так как переделал много, но смотри case savepic и так далее

еще интересно что за переменные  $destfile, $ad_thumbquality  и $ad_crsc ?

смотри файл config.datsogallery.php
Он сохраняется в конфиге DG
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
смотри case savepic и так далее

это гдето в datsogallery.php ?

и еще такой вопросик:

в конце вышеупомянутый скрипт записывает файл с изменениями и чето отменяет как я понял)
Код
imagejpeg( $fon, $_FILES['uploadfile']['name'], 98 );
  imagecolordeallocate( $fon, $black );
  imagecolordeallocate( $fon, $white );
  imagedestroy( $fon );
мне же нужно измененный файл назначить переменной для дальнейше обработки скриптом-оригиналом

можно сделать так: $изменФайл = imagejpeg( $fon, $_FILES['uploadfile']['name'], 98 ); или как вообще это реализовать?

чувствую что нужно править вот тут:$_FILES['uploadfile']['name'], а что - понятия не имею (((

p.s.
запросы к БД
INSERT INTO `jos_datsogallery` (`id`, `catid`, `imgtitle`, `imgauthor`, `imgtext`, `imgdate`, `imgcounter`, `imgdownloaded`, `imgvotes`, `imgvotesum`, `published`, `ordering`, `imgoriginalname`, `imgfilename`, `imgthumbname`, `checked_out`, `owner`, `approved`, `useruploaded`) VALUES
(2, 2, 'выаывфывафы', 'фыв', 'ыфвфыфы', '1266927983', 1, 0, 0, 0, 1, 1, '314AC9AE708D-2.jpg', '314AC9AE708D-2.jpg', '314AC9AE708D-2.jpg', 0, 'admin', 1, 0);
« Последнее редактирование: 24.02.2010, 20:09:59 от Yseff »
*

Peroon

  • Захожу иногда
  • 247
  • 11 / 1
  • http://textonix.ru
С имагой он делает примерно вот это:

http://www.phpclub.net/manrus/f/imagejpeg.html
http://www.tspu.tula.ru/ivt/old_site/umr/trpo/docs/php4_ru/imagecolordeallocate.html
потом освобождает память...

Читай мануал по GD тут я не могу помочь, я под GD писал на перле ((((

с запросом не понял....
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0

с запросом не понял....

мне нужно сохранить изменение сделанные скриптом, причем не меняя имени файла и его расположения.
вот я и кинул запросы к БД может из этого можно извлечь инфу о имени файла и его расположении
*

Peroon

  • Захожу иногда
  • 247
  • 11 / 1
  • http://textonix.ru
стоп стоп...
давай разберемся по шагам, что делает скрипт с файлом при загрузке.

1. он его сохраняет в папку zipimport
2. Уменьшает его, если нада и кидает в папку images\dg_originals
3. еще раз уменьшает и кидает в папку images\dg_pictures\
4. уменьшает и кропит и кидает в папку images\dg_thumbnails\

как то так. очередность может быть и иная.

тебе же надо в папку images\dg_pictures\ кидать не просто ресайз файла а уже измененый. вот сюда и ставь свой скрипт. при желании изменяй и оригинал

запись в БД не трогай, смысла нет)))
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
не получилось (((

вставил скрипт, вроде все правильно, а оно ругается что не может ресайзить (((
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
тебе же надо в папку images\dg_pictures\ кидать не просто ресайз файла а уже измененый. вот сюда и ставь свой скрипт. при желании изменяй и оригинал

а можно как для дибилов ткнуть носом в ту строку с которой мне начать модификацию?
читаю в сотый раз и непонимаю.

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

Peroon

  • Захожу иногда
  • 247
  • 11 / 1
  • http://textonix.ru
Завтра вечером поковыряю родное файло...
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Завтра вечером поковыряю родное файло...


спс
буду ждать
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
наложить картинку на черный фон как мне хотелось у меня получилось, а вот текст из форм не вытаскивается почемуто использовал параметры $imgtitle и $imgtext

подскажи где еще мона порыть этот момент?
*

Peroon

  • Захожу иногда
  • 247
  • 11 / 1
  • http://textonix.ru
В общем смотри, в оригинальном файле строка 402 выглядит как:

if (strlen($org_screenshot) > 0 && $org_screenshot != "none") {

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

перед строкой 402 и лепи свою функцию. она будет редактировать файло как надо, а уже потом само собой и будет раскидано по папкам.
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
вот еще интересный нюанс нарисовался

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

что такое может быть?
*

Peroon

  • Захожу иногда
  • 247
  • 11 / 1
  • http://textonix.ru
Что значит не отображается? подробнее мона?)))
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Что значит не отображается? подробнее мона?)))
GD по логике должна была подрисовать на черном фоне, белым, текст (см. скрипт выше). но его почемуто нету когда скрипт работает в составе галереи.

вне нее все нормально прорисовывается.

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

сперва я думал что чето не то с переменными из форм и назначил сам текст для переменных но это не помогло ((

его все равно нету на черном фоне ((
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
может быть такое что галерея не понимает работы со шрифтами?

моожет надо мой скрипт выделить отдельным кодом? в составе datsogallery.php?

что вообще это такое - я в шоке :o
*

Peroon

  • Захожу иногда
  • 247
  • 11 / 1
  • http://textonix.ru
а ты попробуй не буквы а цифры. и не черный фон а белый.
Еще возможна засада с кодировкой, но это маловероятно...
а вообще мне кажется что в составе жумлы ты не подключил какие нить библиотеки...
посмотри откуда стартует скрипт и где лежат библиотеки... что нить с путями и намудрил)))
*

Peroon

  • Захожу иногда
  • 247
  • 11 / 1
  • http://textonix.ru
про цвет я в том плане, что может текст тоже черный?
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
про цвет я в том плане, что может текст тоже черный?

саму структуру скрипта я не менял, изменил только путь к файлу

текст не должен быть черным насколько я понимаю
*

Yseff

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
а вообще мне кажется что в составе жумлы ты не подключил какие нить библиотеки...
посмотри откуда стартует скрипт и где лежат библиотеки... что нить с путями и намудрил)))
какие могут ту нужны быть библиотеки?

как фрейм в жумле скрипт работает правильно а как часть кода галереи - несовсем)((
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Убрать счет картинок при массовой загрузке.

Автор tgk

Ответов: 0
Просмотров: 1633
Последний ответ 18.08.2010, 22:22:56
от tgk
Проблема с одобрением изображения администрацией

Автор Sombre

Ответов: 6
Просмотров: 2339
Последний ответ 24.11.2009, 13:38:40
от Sombre
Открытие оригинального изображения при клике на миниатюру в категории

Автор MAMOHT

Ответов: 7
Просмотров: 5359
Последний ответ 01.09.2009, 17:32:38
от Pleschengrad
Правка визуального отображения

Автор dron

Ответов: 4
Просмотров: 3116
Последний ответ 22.02.2007, 09:53:14
от dron