Auteur Topic: Watermerk op foto's in Photostation  (gelezen 9673 keer)

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 121
  • -Ontvangen: 179
  • Berichten: 1.982
Watermerk op foto's in Photostation
« Gepost op: 24 november 2009, 19:15:30 »
[Code bijgewerkt met oplossing Firefox probleem]
Ik zag een tijdje geleden al een een aantal vragen langskomen op het forum over het toepassen van watermerken bij het tonen van foto's via Photostation.
Omdat de vraag mij intrigeerde ben ik eens aan het pluizen geslagen:

in het bestand convert.php (lokatie: /usr/syno/synoman/phpsrc/photo/) wordt het oproepen van de afbeeldingen geregeld.
Op regel negentig van dit bestand wordt gescheiden op welk soort bestand getoond moet worden. Keuze bestaat uit:
0) Kleine thumbnail
1) Grote thumbnail
2) Origineel bestand
3) Video

Middels het select case principe wordt hierin onderscheid gemaakt.

Ik heb de procedures bij 1 en 2 zo aangepast dat daar waar de variabele $file wordt gevuld ($file = etc.) een aanroep wordt gedaan naar een nieuw toe te voegen functie WATERMARK.
Deze functie zorgt voor het invoegen van een watermerk rechtsonder in de afbeelding.

Hoe toe te passen:
1) Maak een reservekopie van het bestand /usr/syno/synoman/phpsrc/photo/convert.php
2) Pas convert.php als volgt aan:
na regel met 'case '1'' de regel met $file = SYNOPHOTO_CONVERT_GetThumbPathFromFullPath($dir."/".$name, 1); wijzigen in $file = WATERMARK($dir,$name,1,1);na regel met 'case '2'' de regel met $file = $dir."/".$name; wijzigen in $file = WATERMARK($dir,$name,0,0);op de regel voor de php eindtag '?>' de volgende regels invoegen
function WATERMARK($dir, $name, $thumb, $thumbsize)
{
$watermark = imagecreatefrompng('/var/services/web/copyright.png');  
$watermark_width = imagesx($watermark);  
$watermark_height = imagesy($watermark);  
$image = imagecreatetruecolor($watermark_width, $watermark_height);  
if ($thumb != 1) {
$image = imagecreatefromjpeg($dir."/".$name);  
$size = getimagesize($dir."/".$name);  
} else{
$image = imagecreatefromjpeg(SYNOPHOTO_CONVERT_GetThumbPathFromFullPath($dir."/".$name, $thumbsize));  
$size = getimagesize(SYNOPHOTO_CONVERT_GetThumbPathFromFullPath($dir."/".$name, $thumbsize));  
}
$dest_x = $size[0] - $watermark_width - 5;  
$dest_y = $size[1] - $watermark_height - 5;  
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);  
imagejpeg($image,"/volume1/@tmp/tmp.jpg");  
$file = "/volume1/@tmp/tmp.jpg";
imagedestroy($image);  
imagedestroy($watermark);
return $file;
}
?>
Na de regel @readfile($file); invoegen:unlink("/volume1/@tmp/tmp.jpg");
Het uiteindelijke bestand komt er dan bij mij als volgt uit te zien (ik heb de oude regels als commentaar (//) laten staan...

<?php
session_cache_limiter
("must-revalidate");

if(!
session_id()) {
    
session_start();
}

$SYNOPHOTO_ADMIN_PASS "hlinak3";
SYNOPHOTO_CONVERT_AccessRightCheck();

$SYNOPHOTO_SERVICE_DIR "/var/services/photo";
$SYNOPHOTO_EADIR "@eaDir";
$SYNOPHOTO_THUMB_FILE_BIG "SYNOPHOTO:THUMB_B&#46;jpg";
$SYNOPHOTO_THUMB_FILE_SMALL "SYNOPHOTO:THUMB_S&#46;jpg";
$SYNOPHOTO_FLV_FILE "SYNOPHOTO:FILM&#46;flv";
$SYNOPHOTO_FLV_FILE_FAIL "SYNOPHOTO:FILM&#46;fail";

$SYNOPHOTO_ALLOW_PICT_NAMES_EXT = array(
"jpg",
"jpeg",
    
"jpe",
"bmp",
    
"gif",
    
"png" 
);

$SYNOPHOTO_ALLOW_PICT_WITH_THUMB_EXT = array(
    
"jpg",
    
"jpeg",
    
"jpe",
    
"bmp"
);

$SYNOPHOTO_ALLOW_PICT_NAMES_MIME = array(
    
'jpg' => 'image/jpeg',
    
'jpeg' => 'image/jpeg',
    
'jpe' => 'image/jpeg',
    
'bmp' => 'image/bmp',
    
'gif' => 'image/gif',
    
'png' => 'image/png'
);

$SYNOPHOTO_VIDEO_MIME = array(
    
'avi' => 'video/x-msvideo',
    
'm4v' => 'video/x-m4v',
    
'mov' => 'video/quicktime',
    
'mp4' => 'video/mp4',
    
'mpe'=>  'video/mpeg',
'mpeg'=> 'video/mpeg',
'mpg'=> 'video/mpeg',
'qt' => 'video/quicktime',
    
'asf' => 'video/x-ms-asf',
'wmv' => 'video/x-ms-wmv'
);

if(isset(
$_GET['currdir'&#93;) && isset($_GET['currname'&#93;)) {

$dir $SYNOPHOTO_SERVICE_DIR&#46;"/"&#46;$_GET['currdir'&#93;;
$name $_GET['currname'&#93;;

    
$is_photo_file SYNOPHOTO_CONVERT_IsPhotoFile($name);
    
    if(isset(
$_GET['showorig'&#93;)) {
    
if($is_photo_file) {
            if(!
SYNOPHOTO_CONVERT_CheckAllowOrig($dir$name)) {
                exit;
            }
    
$mime_type SYNOPHOTO_CONVERT_GetPhotoMimeType($name);
        
$file $dir&#46;"/"&#46;$name;
    
} else {
    
$mime_type "video/x-flv";
        
$file SYNOPHOTO_CONVERT_GetFlvPath($dir$name);
    
$name $name&#46;"&#46;flv";
    
}
    } else if(isset(
$_GET['showthumb'&#93;)) {
    
$file SYNOPHOTO_CONVERT_GetThumbPathFromFullPath($SYNOPHOTO_SERVICE_DIR&#46;"/"&#46;$_GET['currdir'&#93;&#46;"/"&#46;$_GET['currname'&#93;, 0);
        
$mime_type "image/jpeg";
    } else {
    
$file SYNOPHOTO_CONVERT_GetThumbPathFromFullPath($SYNOPHOTO_SERVICE_DIR&#46;"/"&#46;$_GET['currdir'&#93;&#46;"/"&#46;$_GET['currname'&#93;, 1);
        
$mime_type "image/jpeg";
    }
} elseif(isset(
$_GET['dir'&#93;) && isset($_GET['name'&#93;)) {

    
$dir $SYNOPHOTO_SERVICE_DIR&#46;"/"&#46;@pack('H*', $_GET['dir'&#93;);
    
$name = @pack('H*'$_GET['name'&#93;);   

    
$is_photo_file SYNOPHOTO_CONVERT_IsPhotoFile($name);
    
    
// 0:small; 1:big; 2:org; 3:flv;
    
switch ($_GET['type'&#93;) {
    
case '0':
        
$file SYNOPHOTO_CONVERT_GetThumbPathFromFullPath($dir&#46;"/"&#46;$name, 0);
        
$mime_type "image/jpeg";
        break;
    case 
'1':
        
//$file = SYNOPHOTO_CONVERT_GetThumbPathFromFullPath($dir&#46;"/"&#46;$name, 1);
$file WATERMARK($dir,$name,1,1);
$mime_type "image/jpeg";
        break;
    case 
'2':
        if(!
SYNOPHOTO_CONVERT_CheckAllowOrig($dir$name)) {
            exit;
        }
        if(
$is_photo_file) {
            
$mime_type SYNOPHOTO_CONVERT_GetPhotoMimeType($name);
        } else {
        
$mime_type SYNOPHOTO_CONVERT_GetVideoMimeType($name);
        
if(!$mime_type) {
            
$mime_type "application/octet-stream";
            }
        }
        
//$file = $dir&#46;"/"&#46;$name;
        
$file WATERMARK($dir,$name,0,0);
break;
    case 
'3':
        
$mime_type "video/x-flv";
        
$file SYNOPHOTO_CONVERT_GetFlvPath($dir$name);
        
$name $name&#46;"&#46;flv";
        
break;
    default:
    
exit;
    
break;
    }
}
$signature SYNOPHOTO_CONVERT_CreateSig($file);
if(
$signature) {
SYNOPHOTO_CONVERT_CheckSigExit($signature);
    @
header("Last-Modified: " &#46; $signature[0&#93;);
}

@
header("Cache-Control: max-age="&#46;(3600*24*7));
@header("Content-Type: "&#46;$mime_type);
@header("Content-Length: "&#46;filesize($file));

if($is_photo_file) {
@header("Content-Disposition: inline; filename="&#46;addslashes($name));
}
@
readfile($file);
unlink("/volume1/@tmp/tmp&#46;jpg");

function 
SYNOPHOTO_CONVERT_GetPhotoMimeType($path)
{
    global 
$SYNOPHOTO_ALLOW_PICT_NAMES_MIME;
    
    
$path strtolower($path);
    
$path_parts pathinfo($path);
$extension $path_parts['extension'&#93;;

    
return $SYNOPHOTO_ALLOW_PICT_NAMES_MIME[$extension&#93;;
}

function 
SYNOPHOTO_CONVERT_IsPhotoFile($path)
{   
    global 
$SYNOPHOTO_ALLOW_PICT_NAMES_EXT;

    
$path strtolower($path);
    
$path_parts pathinfo($path);
$extension $path_parts['extension'&#93;;
    
if(in_array($extension$SYNOPHOTO_ALLOW_PICT_NAMES_EXT)) {
        return 
true;
    } else {
        return 
false;
    }
}
function 
SYNOPHOTO_CONVERT_GetVideoMimeType($path)
{   
    global 
$SYNOPHOTO_VIDEO_MIME;

    
$path strtolower($path);
    
$path_parts pathinfo($path);
$extension $path_parts['extension'&#93;;
if(array_key_exists($extension$SYNOPHOTO_VIDEO_MIME)) {
return $SYNOPHOTO_VIDEO_MIME[$extension&#93;;
}
return '';
}


function 
SYNOPHOTO_CONVERT_IsPhotoFileWithThumb($path)
{   
    global 
$SYNOPHOTO_ALLOW_PICT_WITH_THUMB_EXT;

    
$path strtolower($path);
    
$path_parts pathinfo($path);
    
$extension $path_parts['extension'&#93;;
    
if(in_array($extension$SYNOPHOTO_ALLOW_PICT_WITH_THUMB_EXT)) {
        return 
true;
    } else {
        return 
false;
    }
}

function 
SYNOPHOTO_CONVERT_GetFlvPath($dir$name)
{
     global 
$SYNOPHOTO_EADIR$SYNOPHOTO_FLV_FILE$SYNOPHOTO_SERVICE_DIR;
     return 
$dir&#46;"/"&#46;$SYNOPHOTO_EADIR&#46;"/"&#46;$name&#46;"/"&#46;$SYNOPHOTO_FLV_FILE;
}

function 
SYNOPHOTO_CONVERT_GetFlvFailPath($dir$name)
{
     global 
$SYNOPHOTO_EADIR$SYNOPHOTO_FLV_FILE_FAIL$SYNOPHOTO_SERVICE_DIR;
     return 
$dir&#46;"/"&#46;$SYNOPHOTO_EADIR&#46;"/"&#46;$name&#46;"/"&#46;$SYNOPHOTO_FLV_FILE_FAIL;
}

function 
SYNOPHOTO_CONVERT_GetThumbPathFromFullPath($path$is_big_thumb)
{
    global 
$SYNOPHOTO_EADIR;
    global 
$SYNOPHOTO_THUMB_FILE_BIG$SYNOPHOTO_THUMB_FILE_SMALL;
    
    
$file_name basename($path);
    
$dir substr($path0strlen($path) - strlen($file_name));
    
    if(
$is_big_thumb) {
        
$thumb_file $dir&#46;$SYNOPHOTO_EADIR&#46;"/"&#46;$file_name&#46;"/"&#46;$SYNOPHOTO_THUMB_FILE_BIG;
    
} else {
        
$thumb_file $dir&#46;$SYNOPHOTO_EADIR&#46;"/"&#46;$file_name&#46;"/"&#46;$SYNOPHOTO_THUMB_FILE_SMALL;
    
}
    return 
$thumb_file;
}

function 
SYNOPHOTO_CONVERT_CreateSig($thumbpath) {
    
$filest = @stat($thumbpath);
    
$etag "";
    if(
$filest != FALSE) {
$lastmod =  gmdate('D, d M Y H:i:s'$filest[9&#93;) &#46; ' GMT';
        
return array($lastmod);
    } else {
return FALSE;
}
}

function 
SYNOPHOTO_CONVERT_CheckSigExit($signature) { 
$etag $signature[0&#93;;
$lastmod $signature[1&#93;;
    
if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE'&#93;)) {
$ims preg_replace('/;&#46;*$/'''$_SERVER['HTTP_IF_MODIFIED_SINCE'&#93; );
if($ims == $lastmod) {
@header("HTTP/1&#46;1 304 Not Modified");
exit;     
}
}
}

function 
SYNOPHOTO_CONVERT_AccessRightCheck()
{
    global 
$SYNOPHOTO_ADMIN_PASS;
    
    if(isset(
$_SESSION['admin_syno_user'&#93;) && $_SESSION['admin_syno_user'&#93; == $SYNOPHOTO_ADMIN_PASS) {
        
return;
    }

    if(isset(
$_GET['currdir'&#93;) && isset($_GET['currname'&#93;)) {
        
$_GET['dir'&#93; = bin2hex($_GET['currdir'&#93;);
        
$_GET['name'&#93; = bin2hex($_GET['currname'&#93;);
    
}
    
    if(!isset(
$_GET['dir'&#93;) || $_GET['dir'&#93; == "" || !isset($_GET['name'&#93;) || $_GET['name'&#93; == "") {
        
header("Location: /photo/index&#46;php");
        exit;
    }
    
    
$orig_dir = @pack('H*'$_GET['dir'&#93;);
    
$dir $orig_dir;
    
    if(
strstr($orig_dir"/")) {
        
$dir substr($orig_dir0strpos($orig_dir"/"));
        if(
strpos($orig_dir"/"strlen($dir) + 1)) {
            
$sub_dir substr($orig_dir0strpos($orig_dir"/"strlen($dir) + 1));
        } else {
            
$sub_dir $orig_dir;
        }
    } else {
        
$sub_dir "";
    }

    if(!isset(
$_SESSION['accessible_album'&#93;)) {
        
SYNOPHOTO_CONVERT_GetAccessibleAlbums();
    }
    
    if(!
$_SESSION['accessible_album'&#93;[$dir&#93; ||
       
($sub_dir != "" && !$_SESSION['accessible_subdir'&#93;[$sub_dir&#93;)) {
        
echo "<script>";
echo "parent&#46;location = "/photo/login&#46;php?url="&#46;bin2hex($_SERVER['PHP_SELF'&#93;&#46;"?"&#46;$_SERVER['QUERY_STRING'&#93;)&#46;"";";
echo "</script>";
        exit;
    }
}

function 
SYNOPHOTO_CONVERT_GetAccessibleAlbums()
{
    
$_SESSION['accessible_album'&#93; = null;
    
$_SESSION['accessible_subdir'&#93; = null;
    
    
if (isset($_SESSION['admin_syno_user'&#93;)) {
        
$query "Select * from photo_share order by sharename asc";
    } elseif (isset(
$_SESSION['reg_syno_user'&#93;)) {
        
$query "Select * from photo_share where shareid in (select shareid from photo_access_right where userid = "&#46;$_SESSION['reg_syno_userid'&#93;&#46;") or public = true order by sharename asc";
    
} else {
        
$query "Select * from photo_share where public = true order by sharename asc";
    }

    
$username "admin";
    
$dbname "photo";
    
$conn_string "dbname="&#46;$dbname&#46;" user="&#46;$username;

    
if (!isset($GLOBALS['dbconn_photo'&#93;) || $GLOBALS['dbconn_photo'&#93; == null) {
        
$GLOBALS['dbconn_photo'&#93; = pg_connect($conn_string) or die("Failed to connect");
    
}
    
    
$db_result pg_query($GLOBALS['dbconn_photo'&#93;, $query);
    
    
while($row pg_fetch_row($db_result)) {
        if(
$row[8&#93; == 't') {
            
$_SESSION['accessible_subdir'&#93;[$row[1&#93;&#93; = 1;
        
} else {
            
$_SESSION['accessible_album'&#93;[$row[1&#93;&#93; = 1;
        
}
    }
}

function 
SYNOPHOTO_CONVERT_CheckAllowOrig($dir$name)
{
    if(
SYNOPHOTO_CONVERT_IsPhotoFile($name)) {
        if(!
SYNOPHOTO_CONVERT_IsPhotoFileWithThumb($name)) {
            return 
TRUE;
        }
    } else {
        
$file SYNOPHOTO_CONVERT_GetFlvFailPath($dir$name);
        
// User can download video when this video can not be converted to flv&#46;
        
if(@file_exists($file)) {
            return 
TRUE;
        }
        
$is_video TRUE;
    }
    
    
$username "admin";
    
$dbname "photo";   
    
$conn_string "dbname="&#46;$dbname&#46;" user="&#46;$username;

    
if (!isset($GLOBALS['dbconn_photo'&#93;) || $GLOBALS['dbconn_photo'&#93; == null) {
        
$GLOBALS['dbconn_photo'&#93; = pg_connect($conn_string) or die("Failed to connect");
    
}
    
    
$result FALSE;

    
$config_name "allow_orig";
    if(
$is_video) {
        
$config_name "allow_video_download";
    }
    
    
$query "Select config_value from photo_config where module_name = 'photo' and config_key = '"&#46;$config_name&#46;"'";
    
$db_result pg_query($GLOBALS['dbconn_photo'&#93;, $query);
    
if($row pg_fetch_row($db_result)) {
        if(
$row[0&#93; == 'on') {
            
$result TRUE;
        }
    }
    return 
$result;
}

function 
WATERMARK($dir$name$thumb$thumbsize)
{
$watermark imagecreatefrompng('/var/services/web/copyright&#46;png');  
$watermark_width imagesx($watermark);  
$watermark_height imagesy($watermark);  
$image imagecreatetruecolor($watermark_width$watermark_height);  
if ($thumb != 1) {
$image imagecreatefromjpeg($dir&#46;"/"&#46;$name);  
$size getimagesize($dir&#46;"/"&#46;$name);  
} else{
$image imagecreatefromjpeg(SYNOPHOTO_CONVERT_GetThumbPathFromFullPath($dir&#46;"/"&#46;$name, $thumbsize));  
$size getimagesize(SYNOPHOTO_CONVERT_GetThumbPathFromFullPath($dir&#46;"/"&#46;$name, $thumbsize));  
}
$dest_x $size[0&#93; - $watermark_width - 5;  
$dest_y $size[1&#93; - $watermark_height - 5;  
imagecopymerge($image$watermark$dest_x$dest_y00$watermark_width$watermark_height100);  
//$file = imagejpeg($image);  
imagejpeg($image,"/volume1/@tmp/tmp&#46;jpg");  
$file "/volume1/@tmp/tmp&#46;jpg";
imagedestroy($image);  
imagedestroy($watermark); 
return $file
}
?>


Wat er hier gebeurt is dat een ander plaatje, nl. /var/services/web/copyright.png in de rechteronderhoek van een nieuw tijdelijk plaatje (/volume1/@tmp/tmp.jpg)  op basis van de originele (thumbnail)afbeelding wordt geplakt. Overigens is /var/services/web hetzelfde als /volume1/web :D. Je kan natuurlijk een andere lokatie kiezen: pas dan het script overeenkomstig aan!
Het plaatje in kwestie is een simpel png bestandje: zwarte tekst op een transparante achtergrond.
De tijdelijke afbeelding wordt na verzending naar de bezoeker automatisch verwijderd.

!BELANGRIJK OM TE WETEN!
- Het watermerk wordt alleen toegevoegd aan de afbeeldingen die via Photostation naar een bezoeker worden verzonden. Dit betekent dus dat de originele bestanden en thumbnails ONGEWIJZIGD blijven!
- Het watermerk wordt niet toegevoegd aan de hele kleine thumbnails in de overzichten. Leek mij niet zinvol. Ook video's worden niet meegenomen.
- Getest op DSM 2.2-9042 onder IE7 en Firefox 3
- Wijzigingen op eigen risico. Maak backups!
- Code met dank aan Brock Ferguson (http://articles.sitepoint.com/article/w ... images-php)
- Gooi de cache van je browser leeg, anders kan het zijn dat het net lijkt of er niets gewijzigd is.
- Herstelactie voor als het misgaat: plaats de in stap 1 gemaakte backup terug

Veel plezier er mee!

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 121
  • -Ontvangen: 179
  • Berichten: 1.982
Re: Watermerk op foto's in Photostation
« Reactie #1 Gepost op: 24 november 2009, 20:40:25 »
Leuk, op je eigen bericht reageren...
Voor iemand mij voor is, ik heb er nog wel een issue mee ontdekt met Firefox... :evil:  Volledige afbeeldingen geven ineens de inhoud van de jpg weer en niet de jpg als plaatje... Wordt onderzocht, maar suggesties zijn welkom.

Groet,

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline Matr1x

  • Global Moderator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 250
  • -Ontvangen: 758
  • Berichten: 5.021
Re: Watermerk op foto's in Photostation
« Reactie #2 Gepost op: 24 november 2009, 21:37:23 »
Petje af voor deze info hoor  :o
  • Mijn Synology: DS224+
  • HDD's: 2x HAT3300-4T
  • Extra's: MR2200ac / RT2600ac

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 121
  • -Ontvangen: 179
  • Berichten: 1.982
Re: Watermerk op foto's in Photostation
« Reactie #3 Gepost op: 24 november 2009, 23:54:02 »
Het Firefox probleem is getackeld. Overigens bleek ook dat onder IE met de 'oude' code afbeeldingen niet kon opslaan. Dat lukt nu ok weer.
Het probleem lag er in dat beide browsers niet goed om kunnen gaan met een plaatje gegenereerd uit het geheugen en niet fysiek aanwezig. Om dat te ondervangen heb ik de functie WATERMARK zo aangepast dat er niet meer een plaatje in het geheugen wordt gemaakt en verzonden, maar een tijdelijk bestand /volume1/@tmp/tmp.jpg wordt aangemaakt. Dit bestand wordt na alle acties gewist.
Code van de bovenstaande post is aangepast.
Mogelijke valkuil: meedere gebruikers tegelijkertijd op Photostation. Niet getest.

Groet,

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline Freez

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 12
Re: Watermerk op foto's in Photostation
« Reactie #4 Gepost op: 11 december 2009, 11:03:09 »
Hoi,

Als ik jou was zou ik geen vaste naam gebruiken voor een tijdelijke bestand maar gebruik maken van de functie tempnam(), zo krijg je altijd een unieke bestandsnaam.
$filename = tempnam  ( "/volume1/@tmp", "prefix_"  );
imagejpeg($image, $filename );
//do something with the file
unlink($filename)

Verder leuke mod, ga zo door  :)

Greetz Freez

Offline GreyForceOne

  • MVP
  • *
  • Bedankjes
  • -Gegeven: 42
  • -Ontvangen: 51
  • Berichten: 446
Re: Watermerk op foto's in Photostation
« Reactie #5 Gepost op: 16 maart 2010, 09:25:11 »
Misschien kan iemand mij vertellen hoe ik en met wat voor programma ik dit voor elkaar krijg aub

afz de leek.
  • Mijn Synology: DS212+
  • HDD's: WD Red WD10EFRX 1 TB

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 121
  • -Ontvangen: 179
  • Berichten: 1.982
Re: Watermerk op foto's in Photostation
« Reactie #6 Gepost op: 16 maart 2010, 11:24:41 »
Citaat van: "damel"
Misschien kan iemand mij vertellen hoe ik en met wat voor programma ik dit voor elkaar krijg aub
...eeeh, tja, het 'hoe' staat toch echt heel duidelijk in mijn eerste post beschreven... Nog duidelijker en ik zou het bij jou zelf moeten komen aanpassen :mrgreen:
Anyway, het komt er op neer dat je een aantal aanpassingen moet doen in het bestand convert.php. Dit bestand bevindt zich in de directory /usr/syno/synoman/phpsrc/photo/. Als je de aanpassingen wilt maken zal je via een telnet-sessie moeten inloggen op je Syno en vervolgens met een editor (standaard is vi) de aanpassingen zoals die in de post zijn beschreven moeten opnemen in dit bestand.
Je kunt het bestand natuurlijk ook kopiëren naar een lokatie waar je met Windows bij kunt en het dan met je eigen editor (al is het maar notepad) bewerken. Na bewerking bestand weer terugplaatsen et voilá...
Maak wel altijd een backup voor je gaat wijzigen!

Let op dat ik dit getest heb met DSM versie: 2.2-9042. Da's dus niet de allerlaatste versie. Het zou kunnen dat in de nieuwe DSM de originele code gewijzigd is.

Succes!

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline GreyForceOne

  • MVP
  • *
  • Bedankjes
  • -Gegeven: 42
  • -Ontvangen: 51
  • Berichten: 446
Re: Watermerk op foto's in Photostation
« Reactie #7 Gepost op: 16 maart 2010, 13:08:49 »
Aan jou uitleg zal het niet liggen maar eerder aan mijn ontwetendheid sorry hier voor  :oops:

Alleen hoe log ik in via telnet is dit gewoon via start - uitvoeren - run - telnet ipadres of zit ik nu echt fout
  • Mijn Synology: DS212+
  • HDD's: WD Red WD10EFRX 1 TB

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 121
  • -Ontvangen: 179
  • Berichten: 1.982
Re: Watermerk op foto's in Photostation
« Reactie #8 Gepost op: 17 maart 2010, 21:01:12 »
Citaat van: "damel"
Alleen hoe log ik in via telnet is dit gewoon via start - uitvoeren - run - telnet ipadres of zit ik nu echt fout
Volledig correct! Al is Putty een mooier programma hiervoor vind ik zelf. Wellicht overigens toch verstandig om jezelf wat Linux eigen te maken voordat je gaat modden... Scheelt een hoop problemen :mrgreen:

Succes!

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline GreyForceOne

  • MVP
  • *
  • Bedankjes
  • -Gegeven: 42
  • -Ontvangen: 51
  • Berichten: 446
Re: Watermerk op foto's in Photostation
« Reactie #9 Gepost op: 18 maart 2010, 11:09:48 »
Als het zo omslachtig is om zoiets te istallern dan sla ik het wel over, jammer dat er geen eenvoudige mannier hier voor is met wincsp had ik er nog wek uitgekomen alleen dit proggie geef de wel bekende 127 foutmelding.
  • Mijn Synology: DS212+
  • HDD's: WD Red WD10EFRX 1 TB


 

Watermerk

Gestart door RIB RunnerBoard Photo Station / Photos

Reacties: 12
Gelezen: 2560
Laatste bericht 16 september 2016, 10:33:18
door HenkGroen
Watermerk in Photo Station, HELP!

Gestart door L4R5Board Photo Station / Photos

Reacties: 17
Gelezen: 3183
Laatste bericht 21 augustus 2017, 21:38:54
door Birdy
Watermerk op foto's in Photostation 4

Gestart door wizjosBoard Photo Station mods

Reacties: 5
Gelezen: 9610
Laatste bericht 02 september 2012, 10:05:33
door cyrus1977