readImage($filename); echo_info("$filename - comment property = <" . $image->getImageProperty("comment") . ">" . "\n"); if ( strstr($image->getImageProperty("comment"), 'LinderPartner - ') === FALSE ) { // file has not been processed yet, let's continue $backup_filename = $BACKUP_DIR . '/' . $filename; $backup_dirname = dirname($backup_filename); if ( !is_dir($backup_dirname) ) { mkdir($backup_dirname, 0755, true); } if ( is_file($backup_filename) ) { echo_info("$filename - backup $backup_filename already exists, nothing to do\n"); $ALL_ERR["$filename"] = "fichier déja présent dans la zone de sauvegarde"; } else if ( copy($filename, $backup_filename) ) // ensure we can make a backup before working on the image { $watermark = new Imagick(); $watermark->readImage($WATERMARK_FILE); if ( $image->getNumberImages() > 1 ) // animated gif ? { // need to split images into frames to get the proper width/height $image = $image->coalesceImages(); } // how big are the images? $iWidth = $image->getImageWidth(); $iHeight = $image->getImageHeight(); // resize the watermark if ( $iHeight < $iWidth ) { $wSize = $iHeight * 0.3; } else { $wSize = $iWidth * 0.3; } $watermark->scaleImage($wSize, $wSize); // get new size $wWidth = $watermark->getImageWidth(); $wHeight = $watermark->getImageHeight(); // calculate the position $x = ($iWidth - $wWidth); $y = ($iHeight - $wHeight); // add copyright as meta data (not supported by .gif, .bmp, and ... ?) $image->commentImage($VERSION); if ( $image->getNumberImages() > 1 ) // animated gif ? { // draw watermark on all frames foreach ($image as $frame) { $frame->compositeImage($watermark, imagick::COMPOSITE_OVER, $x, $y); } $image->optimizeImageLayers(); $image = $image->deconstructImages(); $image->writeImages($filename, true); } else { // draw watermark $image->compositeImage($watermark, imagick::COMPOSITE_OVER, $x, $y); $image->writeImage($filename); } $image->clear(); $image->destroy(); $ALL_OK_PROCESSED["$filename"] = 1; echo_info("$filename - PROCESSED\n"); } else { echo_info("$filename - cannot copy backup $backup_filename\n"); $ALL_ERR['$filename'] = "fichier sans logo mais déja présent dans la zone de sauvegarde"; } } else { echo_info("$filename - already processed, nothing to do\n"); $ALL_OK_ALREADY_PROCESSED["$filename"] = 1; } } catch(ImagickException $e) { echo "$filename - exception" . $e->getMessage() . "\n"; $ALL_ERR["$filename"] = "erreur de format de fichier : " . $e->getMessage(); } } // process main directory process_directory($IMAGE_DIR); // generate report ... echo "Nouveaux fichiers traités : " . strval(sizeof($ALL_OK_PROCESSED)) . "\n"; foreach ( $ALL_OK_PROCESSED as $filename => $dummy ) { echo " - $filename" . "\n"; } echo "Fichiers déja traités : " . strval(sizeof($ALL_OK_ALREADY_PROCESSED)) . "\n"; echo "Erreurs : " . strval(sizeof($ALL_ERR)) . "\n"; foreach ( $ALL_ERR as $filename => $txt ) { echo " - $filename : " . $txt . "\n"; } ?>