Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Rekomendowane odpowiedzi

Opublikowano

Cześć,

chcę wstawić do grafik załączonych do postów znak wodny i... mam problem.

Jak Wy to robicie? W folderze uploads znajdują się avatary i folder profile, na nich oczywiście nie chcę znaku wodnego. Grafiki są w folderach, które powstają automatycznie co miesiąc. Czy tylko "ręczne" wstawianie obsługi znaku wodnego do nowo powstałych katalogów będzie rozwiązaniem? Pewnie można to rozwiązać np. przez .htaccess bo nowe katalogi mają na początku taką samą nazwę, ale ja nie wiem jak. Teraz do każdego katalogu (co miesiąc) trzeba by wstawić grafikę do wyświetlania na zdjęciach plus pliki:

.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule \.(gif|jpeg|jpg|png)$ watermark.php [QSA,NC]

watermark.php

<?php
$path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];
$image = imagecreatefromstring(file_get_contents($path));
$w = imagesx($image);
$h = imagesy($image);
$watermark = imagecreatefrompng('watermark.png');
$ww = imagesx($watermark);
$wh = imagesy($watermark);
imagecopy($image, $watermark, $w-$ww, $h-$wh, 0, 0, $ww, $wh);
header('Content-type: image/jpeg');
imagejpeg($image);
exit();
?>

To kiepskie rozwiązanie bo trzeba pamiętać o wstawieniu tych plików co miesiąc. Pewnie dziecinnie proste jest rozwiązanie. Jakieś pomysły?

Ciekawe czy dobry dział wybrałem :%-):

Opublikowano (edytowane)

Ok. Przetestowałem.

uploads/.htaccess

#<ipb-protection>
<Files ~ "^.*\.(php|cgi|pl|php3|php4|php5|php6|phtml|shtml)">
   Order allow,deny
   Deny from all
</Files>
#</ipb-protection>

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule monthly_([0-9]+)_([0-9]+)/(.*)\.(gif|jpeg|jpg|png)$ ../watermark.php [QSA,NC]

watermark.php :%-): /glowny_katalog

watermark.png :a: /glowny_katalog

Tylko że ta metoda nie zadziała z czymś takim: http://domena/index.php?app=core&module=attach&section=attach&attach_rel_module=post&attach_id=IDIDIDIDIDID

Więc wypadało by edytować funkcję wyświetlającą grafiki.

Edytowane przez Pavulon
Opublikowano (edytowane)

Próbowałem czegoś takiego.

Plik:

admin/applications/core/sources/classes/attach/class_attach.php

Znajdź (w funkcji public function showAttachment( $attach_id ))

				if( !ini_get('zlib.output_compression') OR ini_get('zlib.output_compression') == 'off' )
			{
				header( 'Content-Length: ' . (string) ( filesize( $file ) ) );
			}

			if( $fh = fopen( $file, 'rb' ) )
			{
	            while( ! feof( $fh ) )
	            {
	                echo fread( $fh, 4096 );
	                flush();
	                @ob_flush();
	            }

           		@fclose( $fh );
       		}

			exit();

na:

				/*if( !ini_get('zlib.output_compression') OR ini_get('zlib.output_compression') == 'off' )
			{
				header( 'Content-Length: ' . (string) ( filesize( $file ) ) );
			}*/

       $img_contents = '';
			if( $fh = fopen( $file, 'rb' ) )
			{
         while( ! feof( $fh ) )
         {
           $img_contents .= fread( $fh, 4096 );
           flush();
           @ob_flush();
         }

         @fclose( $fh );
       }

       switch ($attach['attach_ext']) {
         case "gif":
           $image = imagecreatefromgif($file);
           break;
         case "png":
           $image = imagecreatefrompng($file);
           break;
         case "bmp":
           $image = imagecreatefromwbmp($file);
           break;
         case "jpg" :
         case "jpeg" :
           $image = imagecreatefromjpeg($file);
           break;
         default :
           $image = imagecreatefromstring($img_contents);
           break;
       }

       $w = imagesx($image);
       $h = imagesy($image);
       $watermark = imagecreatefrompng('/folder/gdzie/znajduje/sie/watermark.png');
       $ww = imagesx($watermark);
       $wh = imagesy($watermark);
       imagecopy($image, $watermark, $w-$ww, $h-$wh, 0, 0, $ww, $wh);

       switch ($attach['attach_ext']) {
         case "gif":
           imagegif($image);
           break;
         case "png":
           imagepng($image);
           break;
         case "bmp":
           imagewbmp($image);
           break;
         default :
           imagejpeg($image);
           break;
       }
       imagedestroy($image);

			exit();

'

1. Kod który trzeba zamienić może u ciebie wyglądać inaczej (nie zachowałem sobie oryginalnego pliku).

2. Z jpg działa dobrze, przy gif/png trochę dziwne efektry (może wina mojego watermark'a a może jeszcze czegoś brakuje).

Mały test dla różnych rozszerzeń.

GIF: post-1579-1263582343,3142_thumb.gif

PNG: post-1579-1263582353,8114_thumb.png

JPG: post-1579-1263582348,3004_thumb.jpg

Przydało by się jakieś dobre rozwiązanie do wszystkiego.

Edytowane przez Pavulon

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.