{"id":1302,"date":"2024-03-13T10:54:17","date_gmt":"2024-03-13T09:54:17","guid":{"rendered":"https:\/\/contecon.de\/picapportwiki\/?page_id=1302"},"modified":"2024-03-13T10:57:44","modified_gmt":"2024-03-13T09:57:44","slug":"picapport-plug-in-guide-2","status":"publish","type":"page","link":"https:\/\/contecon.de\/picapportwiki\/picapport-plug-in-guide-2\/","title":{"rendered":"PicApport Plug-in Guide"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1302\" class=\"elementor elementor-1302\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5e52b8f e-flex e-con-boxed e-con e-parent\" data-id=\"5e52b8f\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ed7f102 elementor-widget elementor-widget-heading\" data-id=\"ed7f102\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.19.0 - 07-02-2024 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h2 class=\"elementor-heading-title elementor-size-default\">PicApport Plug-in Guide<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8cbc837 elementor-widget elementor-widget-heading\" data-id=\"8cbc837\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">General<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8bb8148 elementor-widget elementor-widget-text-editor\" data-id=\"8bb8148\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.19.0 - 07-02-2024 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<h3 id=\"PicApportPlug-inGuide-Version\">Version<\/h3><p>Plug-ins have been introduced in PicApport 4.0.0. So all you need as a\u00a0<em><strong>picapport.jar<\/strong><\/em>\u00a0or\u00a0<em><strong>picapport.exe<\/strong><\/em>\u00a0with Version 4.0 or later.<\/p><h3 id=\"PicApportPlug-inGuide-AvailablePlug-ins\">Available Plug-ins<\/h3><p>Currently (Feb 2015) we offer the following plug-ins. Please check\u00a0<a class=\"external-link\" href=\"http:\/\/picapport.de\/plugins.php\" rel=\"nofollow\">http:\/\/picapport.de\/plugins.php<\/a>\u00a0for updates.<\/p><div class=\"table-wrap\">\u00a0<\/div><table class=\"confluenceTable tablesorter tablesorter-default stickyTableHeaders\" role=\"grid\"><tbody aria-live=\"polite\" aria-relevant=\"all\"><tr role=\"row\"><td class=\"confluenceTd\"><p><em><strong>PicApportJava<br \/>ImagePlugin-1.0.zip<br \/><a class=\"external-link\" href=\"http:\/\/picapport.de\/plugins.php\" rel=\"nofollow\">http:\/\/picapport.de\/<br \/>plugins.php<\/a><\/strong><\/em><\/p><p>Simple plug-in based <br \/>on Java imageIO and <br \/>TwelveMonkeys.<\/p><p>The following meta-data <br \/>is supported:<\/p><ul><li>title (set to <br \/>original filename)<\/li><\/ul><\/td><td class=\"confluenceTd\"><ul><li>.bmp<\/li><li>.gif<\/li><li>.png<\/li><li>.psd<\/li><li>.tif<\/li><li>.tiff<\/li><\/ul><\/td><td class=\"confluenceTd\">\u00a0<\/td><td class=\"confluenceTd\"><ul><li>As an option from <br \/>the Windows-Installer<p>or<\/p><\/li><li>Copy the zip-file <br \/>to the plug-in directory<\/li><li>Restart PicApport<\/li><\/ul><\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\"><p><em><strong>PicApport<br \/>PdfPlugin.zip<br \/><a class=\"external-link\" href=\"http:\/\/picapport.de\/plugins.php\" rel=\"nofollow\">http:\/\/picapport.de\/<br \/>plugins.php<\/a><\/strong><\/em><\/p><p>Based on Apaches <br \/>PDFBox, this plug-in <br \/>takes the first page <br \/>of the pdf-dokument <br \/>and adds the following <br \/>meta-data from the pdf:<\/p><ul><li>title (set to <br \/>original filename)<\/li><li>creation date<\/li><li>creator \/ author<\/li><li>title<\/li><li>keywords (tags)<\/li><li>description <br \/>(subject)<\/li><\/ul><\/td><td class=\"confluenceTd\"><ul><li>pdf<\/li><\/ul><\/td><td class=\"confluenceTd\">\u00a0<\/td><td class=\"confluenceTd\"><ul><li>As an option from <br \/>the Windows-Installer<p>or<\/p><\/li><li>Copy the zip-file <br \/>to the plug-in directory<\/li><li>Restart PicApport<\/li><\/ul><\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\" colspan=\"1\"><p><em><strong>PicApportDc<br \/>RawPlugin.zip<br \/><a class=\"external-link\" href=\"http:\/\/picapport.de\/plugins.php\" rel=\"nofollow\">http:\/\/picapport.de\/<br \/>plugins.php<\/a><\/strong><\/em><\/p><p>Based on Dave <br \/>Coffin&#8217;s work on dcraw\u00a0 <br \/><a class=\"external-link\" href=\"https:\/\/www.cybercom.net\/~dcoffin\/dcraw\/\" rel=\"nofollow\">https:\/\/www.cybercom.net\/<br \/>~dcoffin\/dcraw\/<\/a><br \/>and Mozillas mozjpeg<br \/><a class=\"external-link\" href=\"https:\/\/github.com\/mozilla\/mozjpeg\" rel=\"nofollow\">https:\/\/github.com\/<br \/>mozilla\/mozjpeg<\/a> this plug-in<br \/>provides support for <br \/>almost every RAW format<\/p><p>The following <br \/>meta-data is supported:<\/p><ul><li>title (set to <br \/>original filename)<\/li><li>creation date<\/li><li>Camera<\/li><li>ISO speed<\/li><li>Shutter<\/li><li>Aperture<\/li><li>Focal length<\/li><\/ul><p>\u00a0<\/p><\/td><td class=\"confluenceTd\" colspan=\"1\"><ul><li><p>.3fr<br \/>Hasselblad RAW<\/p><\/li><li><p>.arw <br \/>Sony RAW<\/p><\/li><li><p>.cr2 <br \/>Canon RAW<\/p><\/li><li><p>.crw <br \/>Canon RAW<\/p><\/li><li><p>.dcr <br \/>Kodak RAW<\/p><\/li><li><p>.dng <br \/>Adobe DNG<\/p><\/li><li><p>.erf <br \/>Epson RAW<\/p><\/li><li><p>.kdc <br \/>Kodak RAW<\/p><\/li><li><p>.mef <br \/>Mamiya RAW<\/p><\/li><li><p>.mos <br \/>Leaf Mosaic RAW<\/p><\/li><li><p>.mrw <br \/>Minolta RAW<\/p><\/li><li><p>.nef <br \/>Nikon RAW<\/p><\/li><li><p>.nrw <br \/>Nikon RAW<\/p><\/li><li><p>.orf <br \/>Olympus RAW<\/p><\/li><li><p>.pef <br \/>Pentax RAW<\/p><\/li><li><p>.raf <br \/>Fuji RAW<\/p><\/li><li><p>.raw <br \/>Panasonic RAW<\/p><\/li><li><p>.rw2 <br \/>Panasonic RAW<\/p><\/li><li><p>.sr2 <br \/>Sony RAW<\/p><\/li><li><p>.srf <br \/>Sony RAW<\/p><\/li><li><p>.srw <br \/>Samsung RAW<\/p><\/li><li><p>.x3f <br \/>Sigma RAW<\/p><\/li><\/ul><\/td><td class=\"confluenceTd\" colspan=\"1\"><p><em><strong>For Linux users<\/strong><\/em>:<br \/>make sure that dcraw is<br \/>installed. <br \/>Also<span class=\"st\"><span class=\"f\">\u00a0<\/span><em>CJPEG<\/em> (part of the <br \/>standard JPEG library libjpeg)<br \/>must be installed.<\/span><\/p><p><span class=\"st\">Example for Debian:<\/span><\/p><ul><li><span class=\"st\">apt-get install dcraw<\/span><\/li><li><span class=\"st\">apt-get install libjpeg-progs<\/span><\/li><\/ul><p><span class=\"st\"><em><strong>For OS X users<\/strong><\/em><\/span><\/p><div><em><strong>(1)<\/strong><\/em> Install Homebrew:<\/div><div><p>\u00a0<\/p><div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\"><div class=\"codeContent panelContent pdl\"><div><div id=\"highlighter_569829\" class=\"syntaxhighlighter sh-confluence nogutter  java\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\" title=\"Hint: double-click to select code\"><div class=\"line number1 index0 alt2\"><code class=\"java plain\">\/usr\/bin\/ruby -e <\/code><code class=\"java string\">\"$(curl -fsSL <a href=\"https:\/\/raw.githubusercontent.com\/Homebrew\/install\/master\/install)\">https:\/\/raw.githubusercontent.com\/Homebrew\/install\/master\/install)<\/a>\"<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><\/div><p>This will download and install command line tools from X-Code<span class=\"syntaxhighlighter nogutter  bash\">.<\/span><\/p><\/div><div>Webseite for Homebrew:\u00a0<a class=\"external-link\" href=\"https:\/\/brew.sh\/\" rel=\"nofollow\">https:\/\/brew.sh<\/a><\/div><div><em><strong>\u00a0<\/strong><\/em><\/div><div><em><strong>(2)<\/strong><\/em> install dcraw<\/div><div><p>\u00a0<\/p><div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\"><div class=\"codeContent panelContent pdl\"><div><div id=\"highlighter_803349\" class=\"syntaxhighlighter sh-confluence nogutter  java\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\" title=\"Hint: double-click to select code\"><div class=\"line number1 index0 alt2\"><code class=\"java plain\">brew install dcraw<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><\/div><p>\u00a0<\/p><\/div><\/td><td class=\"confluenceTd\" colspan=\"1\"><ul><li>As an option from <br \/>the Windows-Installer<p>or<\/p>Copy the zip-file to <br \/>the plug-in directory<\/li><li>Restart PicApport<\/li><\/ul><\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\"><p><em><strong>PicApportVideoThumbnailPlugin.zip<br \/><\/strong><\/em><br \/><a class=\"external-link\" href=\"https:\/\/www.picapport.de\/en\/plugins.php\" rel=\"nofollow\">https:\/\/www.picapport.de\/en\/plugins.php<\/a><\/p><p>This plugin supports<\/p><ul><li>Installation on Linux<\/li><li>Installation on Windows<\/li><\/ul><p><br \/>The Plug-in is based on<br \/>JavaCV (<a class=\"external-link\" href=\"https:\/\/github.com\/bytedeco\/javacv\" rel=\"nofollow\">https:\/\/github.com\/<br \/>bytedeco\/javacv<\/a>)<br \/>which uses <br \/>OpenCV (<a class=\"external-link\" href=\"http:\/\/opencv.org\/\" rel=\"nofollow\">http:\/\/opencv.org\/<\/a>).<\/p><p>The Plug-in creates <br \/>a substitue <em><strong>.jpg<\/strong><\/em> file<br \/>based on one Frame <br \/>from the Video.<\/p><p>The following meta-data <br \/>is supported:<\/p><ul><li>title (set to <br \/>original filename)<\/li><\/ul><\/td><td class=\"confluenceTd\"><ul><li>.mp4, video\/mp4<\/li><li>.ts, video\/MP2T<\/li><li>.3gp, video\/3gpp<\/li><li>.3g2, video\/3gpp2<\/li><li>.flv, video\/x-flv<\/li><li>.ogv, video\/ogg<\/li><li>.avi, video\/x-msvideo<\/li><li>.webm, video\/webm<\/li><li>.mpg, video\/mpeg<\/li><li>.mpeg, video\/mpeg<\/li><li>.m2v, video\/mpeg<\/li><li>.wmv, video\/x-ms-wmv<\/li><li>.mov, video\/quicktime<\/li><li>.divx,video\/divx<\/li><li>.mkv, video\/x-matroska<\/li><\/ul><\/td><td class=\"confluenceTd\"><div class=\"confluence-information-macro confluence-information-macro-note conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"note\"><div class=\"confluence-information-macro-body\"><p>Please make sure that you remove the old PicApportOpenCvVideoPluginWindows plugin if it was installed.<\/p><p>Steps to uninstall the PicApportOpenCvVideoPluginWindows plugin:<\/p><ul><li>Stop the PicApport Server<\/li><li>remove directory .picapport\/plugins\/PicApportOpenCvVideoPluginWindows<\/li><li>remove zipfile .picapport\/plugins\/PicApportOpenCvVideoPluginWindows.zip<\/li><\/ul><\/div><\/div><\/td><td class=\"confluenceTd\"><ul><li>Copy the zip-file <br \/>to the plug-in directory<\/li><li>Restart PicApport<\/li><\/ul><\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\" colspan=\"1\"><p><em><strong>PicApportOpenCv<br \/>VideoPluginWindows.zip<br \/><\/strong><\/em><s><em><strong>PicApportOpen<\/strong><\/em><\/s><br \/><s>CvVideoPluginLinux.zip<\/s><br \/><a class=\"external-link\" href=\"http:\/\/picapport.de\/plugins.php\" rel=\"nofollow\">http:\/\/picapport.de\/<br \/>plugins.php<\/a><\/p><p>Currently, only the <br \/>Windows version is available.<br \/>(Linux version planned) <br \/><br \/>The Plug-in is based on<br \/>JavaCV (<a class=\"external-link\" href=\"https:\/\/github.com\/bytedeco\/javacv\" rel=\"nofollow\">https:\/\/github.com\/<br \/>bytedeco\/javacv<\/a>)<br \/>which uses <br \/>OpenCV (<a class=\"external-link\" href=\"http:\/\/opencv.org\/\" rel=\"nofollow\">http:\/\/opencv.org\/<\/a>).<\/p><p>The Plug-in creates <br \/>a substitue <em><strong>.jpg<\/strong><\/em> file<br \/>based on one Frame <br \/>from the Video.<\/p><p>The following meta-data <br \/>is supported:<\/p><ul><li>title (set to <br \/>original filename)<\/li><\/ul><\/td><td class=\"confluenceTd\" colspan=\"1\"><ul><li>.mp4, video\/mp4<\/li><li>.ts, video\/MP2T<\/li><li>.3gp, video\/3gpp<\/li><li>.3g2, video\/3gpp2<\/li><li>.flv, video\/x-flv<\/li><li>.ogv, video\/ogg<\/li><li>.avi, video\/x-msvideo<\/li><li>.webm, video\/webm<\/li><li>.mpg, video\/mpeg<\/li><li>.mpeg, video\/mpeg<\/li><li>.m2v, video\/mpeg<\/li><li>.wmv, video\/x-ms-wmv<\/li><li>.mov, video\/quicktime<\/li><li>.divx,video\/divx<\/li><li>.mkv, video\/x-matroska<\/li><\/ul><\/td><td class=\"confluenceTd\" colspan=\"1\"><div class=\"confluence-information-macro confluence-information-macro-information conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"info\"><div class=\"confluence-information-macro-body\"><p>This Plugin has been replaced by the PicApportVideoThumbnailPlugin.zip released in October 2017<\/p><\/div><\/div><\/td><td class=\"confluenceTd\" colspan=\"1\"><ul><li>Copy the zip-file <br \/>to the plug-in directory<\/li><li>Restart PicApport<\/li><\/ul><\/td><\/tr><\/tbody><\/table>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-39e0764 elementor-widget elementor-widget-heading\" data-id=\"39e0764\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Installation<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f190b99 elementor-widget elementor-widget-text-editor\" data-id=\"f190b99\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Before you install a plug-in make sure that you know where your\u00a0<em><strong>.picapport<\/strong><\/em>\u00a0directory of your installation is located.<\/p><p>During server-startup the plug-in directory will be displayed like this:\u00a0<em><strong>MSG\u00a0 @ 14:56:03.268 Search for plugins in C:\\Users\\username\\.picapport\\plugins<\/strong><\/em><\/p><p>Copy one ore more the plug-in.zip file(s) to the\u00a0<em><strong>.picapport\/plugins<\/strong><\/em>\u00a0directory and (re)start the PicApport server.<\/p><p>After restarting the server you can check the current logfile in the\u00a0<em><strong>.picapport\/logfiles<\/strong><\/em>\u00a0directory if a plug-in has been installed successfully.<br \/>Depending on the plug-in-type the logfile should contain something like this:<\/p><p>&#8230;&#8230;..<br \/>MSG @ 14:53:18.045 Plugin loaded: PicApport GIF plugin 1.0 (c) 2014 Contecon Software GmbH\u00a0<span style=\"color: #ff0000;\">.gif<\/span>\u00a0<span style=\"color: #008000;\">image\/gif<\/span>\u00a0(hideSubstitutes=true) implements IOtherFileFormat<br \/>MSG @ 14:53:18.045 Plugin loaded: PicApport PNG plugin 1.0 (c) 2014 Contecon Software GmbH\u00a0<span style=\"color: #ff0000;\">.png<\/span>\u00a0<span style=\"color: #008000;\">image\/png<\/span>\u00a0(hideSubstitutes=true) implements IOtherFileFormat<br \/>MSG @ 14:53:18.047 Plugin loaded: PicApport PDF plugin 1.0 (c) 2015 Contecon Software GmbH\u00a0<span style=\"color: #ff0000;\">.pdf<\/span>\u00a0<span style=\"color: #008000;\">application\/pdf<\/span>\u00a0(hideSubstitutes=true) implements IOtherFileFormat<br \/>&#8230;&#8230;<\/p><p>Where\u00a0<span style=\"color: #ff0000;\">red<\/span>\u00a0shows the file-extension handled by this plug-in and\u00a0<span style=\"color: #008000;\">green<\/span>\u00a0the mime-type of the original file.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6cf05d1 elementor-widget elementor-widget-heading\" data-id=\"6cf05d1\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">How it works<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-baaef8e elementor-widget elementor-widget-text-editor\" data-id=\"baaef8e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>If you are not a programmer this is may be not interesting for you<\/p><h3 id=\"PicApportPlug-inGuide-DuringPicApportstartup\">During PicApport startup<\/h3><ul><li>When PicApport starts it checks the\u00a0<em><strong>.picapport\/plugins<\/strong>\u00a0<\/em>directory for existing\u00a0<em><strong>.zip<\/strong><\/em>\u00a0files.<\/li><li>For each\u00a0<em><strong>.zip<\/strong><\/em>\u00a0file a hidden directory with the same name will be created an the content<br \/>of the\u00a0<em><strong>.zip<\/strong><\/em>\u00a0file will be copied to this directory. This directory is called plugin-directory.<\/li><li><p>Then for each\u00a0<em><strong>.jar<\/strong><\/em>\u00a0file in the plugin-directory the\u00a0<em><strong>Manifest.mf\u00a0<\/strong><\/em>file will be check for a valid\u00a0<em><strong>PicApport-Plugin:<\/strong><\/em>\u00a0entry<\/p><\/li><li>The init() method of the plug-in will be called (only one time during server startup)<br \/>The following information is passed to the<em><strong>\u00a0init()<\/strong><\/em>\u00a0method:<br \/><ul><li><p>File\u00a0<em><strong>pluginDirectory<\/strong><\/em><br \/>The path to the directory where this plug-in was loaded from. This Information<br \/>may be used by the plug-in to load more configuration data.<br \/>A plug-in should not be dependent on information outside this directory<\/p><\/li><li><p>Properties\u00a0<em><strong>props<\/strong><\/em><br \/>If a\u00a0<em><strong>.properties<\/strong><\/em>\u00a0file with the same name as the plug-in exists, it will be loaded by PicApport and passed to the init() method.<br \/>Also make sure that props is passed to the constructor method of the OtherFormatsDescriptor created during the init phase.<br \/>The plug-in may use this file to store additional configuration data. See our\u00a0<em><strong>PicApportPdfPlugin-src.zip<\/strong><\/em>\u00a0plug-in how this can be used.<br \/>Example PicApportPdfPlugin.properties:<\/p><div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\"><div class=\"codeContent panelContent pdl\"><div><div id=\"highlighter_209430\" class=\"syntaxhighlighter sh-confluence nogutter  text\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\" title=\"Hint: double-click to select code\"><div class=\"line number1 index0 alt2\"><code class=\"text plain\"># if resolution is not set the default will be 96 <\/code><\/div><div class=\"line number2 index1 alt1\"><code class=\"text plain\">pdf.resolution=96<\/code><\/div><div class=\"line number3 index2 alt2\">\u00a0<\/div><div class=\"line number4 index3 alt1\"><code class=\"text plain\">menudownload.text=Show PDF<\/code><\/div><div class=\"line number5 index4 alt2\"><code class=\"text plain\">menudownload.text.en=Show PDF<\/code><\/div><div class=\"line number6 index5 alt1\"><code class=\"text plain\">menudownload.text.de=PDF anzeigen<\/code><\/div><div class=\"line number7 index6 alt2\">\u00a0<\/div><div class=\"line number8 index7 alt1\"><code class=\"text plain\">keywords=$nonjpg<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><\/div><p>The<em><strong>\u00a0menudownload.text[.iso language]<\/strong><\/em>\u00a0may be used to set the download text of the original file in the PicApport slideshow.<br \/>If a text for the current language does not exist the default text(<em><strong>menudownload.text<\/strong><\/em>) will be used. (Should be English)<\/p><\/li><li><p>IPicApportPlugInLogger\u00a0<strong><em>logger<\/em><\/strong><br \/>The logger should be saved in a private member of the plug-in and should be used for debug output if required.<\/p><\/li><\/ul><\/li><li><p>The\u00a0<strong><em>init()<\/em><\/strong>\u00a0method should return at least one<strong><em>\u00a0OtherFormatsDescriptor<\/em>\u00a0<\/strong>instance element in the\u00a0<em><strong>\u00a0List&lt;OtherFormatsDescriptor&gt;<\/strong><\/em>\u00a0returned.<\/p><div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\"><div class=\"codeHeader panelHeader pdl\"><b>Create the descriptor<\/b><\/div><div class=\"codeContent panelContent pdl\"><div><div id=\"highlighter_486497\" class=\"syntaxhighlighter sh-confluence nogutter  java\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\" title=\"Hint: double-click to select code\"><div class=\"line number1 index0 alt2\"><code class=\"java keyword\">return<\/code>\u00a0 <code class=\"java plain\">Arrays.asList(<\/code><\/div><div class=\"line number2 index1 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">OtherFormatsDescriptor[] {<\/code><\/div><div class=\"line number3 index2 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">OtherFormatsDescriptor(<\/code><code class=\"java string\">\".gif\"<\/code><code class=\"java plain\">,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"java comments\">\/\/ One of the file extensions this plugin will be called <\/code><\/div><div class=\"line number4 index3 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java string\">\"image\/gif\"<\/code><code class=\"java plain\">,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"java comments\">\/\/ Mime type of the original file<\/code><\/div><div class=\"line number5 index4 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">true<\/code><code class=\"java plain\">,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"java comments\">\/\/ If true, substitute files will be hidden <\/code><\/div><div class=\"line number6 index5 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java string\">\"PicApport GIF plugin\"<\/code><code class=\"java plain\">,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"java comments\">\/\/ Name of the plug-in<\/code><\/div><div class=\"line number7 index6 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java string\">\"(c) 2014 Contecon Software GmbH\"<\/code><code class=\"java plain\">,\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"java comments\">\/\/ Copyright<\/code><\/div><div class=\"line number8 index7 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java string\">\"1.0\"<\/code><code class=\"java plain\">,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"java comments\">\/\/ Version <\/code><\/div><div class=\"line number9 index8 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">props),\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"java comments\">\/\/ always use props passed to the init() method<\/code><\/div><div class=\"line number10 index9 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number11 index10 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">OtherFormatsDescriptor(<\/code><code class=\"java string\">\".png\"<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number12 index11 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java string\">\"image\/png\"<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number13 index12 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">true<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number14 index13 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java string\">\"PicApport PNG plugin\"<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number15 index14 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java string\">\"(c) 2014 Contecon Software GmbH\"<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number16 index15 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java string\">\"1.0\"<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number17 index16 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">props),\u00a0\u00a0\u00a0 <\/code><\/div><div class=\"line number18 index17 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">});<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><\/div><\/li><\/ul><h3 id=\"PicApportPlug-inGuide-Duringscanningofthephotodirectories\">During scanning of the photo directories<\/h3><ul><li>When PicApport scans the photo directory&#8217;s it checks all non-jpg files if a plug-in has been registered.<\/li><li>If a plug-in has been registered:<ul><li>PicApport checks if the substitute file exists<br \/>A substitute file is the jpg representation of the original file. PicApport adds\u00a0<em><strong>.$.jpg<\/strong><\/em>\u00a0to the original file to get the substitute filename.<br \/>If the substitute file does not exist or is older than the original file the\u00a0<strong><em>createJpegFile()<\/em><\/strong>\u00a0method of the plugin will be called to create the substitute file.<br \/>The following information is passed to the\u00a0<strong><em>createJpegFile()<\/em><\/strong>\u00a0method:<ul><li><p>File\u00a0<em><strong>otherFormatFile<\/strong><\/em><br \/>Path to the original File<\/p><\/li><li><p>File\u00a0<em><strong>jpegFileToCreate<\/strong><\/em><br \/>Path to the substitute file that should be created<\/p><\/li><li><p>CcXMPMetaData\u00a0<strong>metaDataIn<\/strong><br \/>Optional meta-data added to the substitute jpg file. If no meta-data is available\u00a0<strong><em>createJpegFile()<\/em><\/strong>\u00a0method should return null.<br \/>If meta-data is available it should be added to\u00a0<em><strong>metaDataIn<\/strong>\u00a0<\/em>and\u00a0\u00a0<em><strong>metaDataIn<\/strong>\u00a0<\/em>should be returned instead of null.<br \/>see: Javadoc on\u00a0<a class=\"external-link\" href=\"http:\/\/picapport.de\/plugins\/javadoc\/\" rel=\"nofollow\">http:\/\/picapport.de\/plugins\/javadoc\/<\/a>\u00a0for more details of CcXMPMetaData .<\/p><\/li><\/ul><\/li><\/ul><\/li><\/ul>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d9f80ce elementor-widget elementor-widget-heading\" data-id=\"d9f80ce\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Programming<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cf289ca elementor-widget elementor-widget-text-editor\" data-id=\"cf289ca\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Plug-ins are programmed in the Java programming language.<\/p><p>Before you start,make sure that you have downloaded a\u00a0<em><strong>picapport.jar<\/strong><\/em>\u00a0with at least version 4.0.0. When you compile your plug-in make sure that<em><strong>\u00a0picapport.jar<\/strong><\/em>\u00a0is in your classpath<\/p><p>Creating a PicApport plug-in is very simple. Basically you just have to implement two Methods in a Java Class:<\/p><ul><li><p>public List&lt;OtherFormatsDescriptor&gt;\u00a0<strong>init<\/strong>(File pluginDirectory, Properties props, IPicApportPlugInLogger logger)<\/p><\/li><li><p>public CcXMPMetaData\u00a0<strong>createJpegFile<\/strong>(File otherFormatFile, File jpegFileToCreate, CcXMPMetaData metaDataIn)<\/p><\/li><\/ul><p>\u00a0<\/p><p>see: Javadoc on\u00a0<a class=\"external-link\" href=\"http:\/\/picapport.de\/plugins\/javadoc\/\" rel=\"nofollow\">http:\/\/picapport.de\/plugins\/javadoc\/<\/a>\u00a0for more details.<\/p><p>\u00a0<\/p><h3 id=\"PicApportPlug-inGuide-SamplePicApportplug-infor.gifand.pngsupport\">Sample PicApport plug-in for .gif and .png support<\/h3><div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\"><div class=\"codeHeader panelHeader pdl\"><b>PicApportJavaImagePlugin<\/b><\/div><div class=\"codeContent panelContent pdl\"><div><div id=\"highlighter_429313\" class=\"syntaxhighlighter sh-confluence nogutter  java\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\" title=\"Hint: double-click to select code\"><div class=\"line number1 index0 alt2\"><code class=\"java keyword\">package<\/code> <code class=\"java plain\">de.contecon.picapport.plugin.javaimage;<\/code><\/div><div class=\"line number2 index1 alt1\"><code class=\"java keyword\">import<\/code> <code class=\"java plain\">java.awt.Color;<\/code><\/div><div class=\"line number3 index2 alt2\"><code class=\"java keyword\">import<\/code> <code class=\"java plain\">java.awt.Graphics2D;<\/code><\/div><div class=\"line number4 index3 alt1\"><code class=\"java keyword\">import<\/code> <code class=\"java plain\">java.awt.image.BufferedImage;<\/code><\/div><div class=\"line number5 index4 alt2\"><code class=\"java keyword\">import<\/code> <code class=\"java plain\">java.io.File;<\/code><\/div><div class=\"line number6 index5 alt1\"><code class=\"java keyword\">import<\/code> <code class=\"java plain\">java.util.Arrays;<\/code><\/div><div class=\"line number7 index6 alt2\"><code class=\"java keyword\">import<\/code> <code class=\"java plain\">java.util.Calendar;<\/code><\/div><div class=\"line number8 index7 alt1\"><code class=\"java keyword\">import<\/code> <code class=\"java plain\">java.util.Date;<\/code><\/div><div class=\"line number9 index8 alt2\"><code class=\"java keyword\">import<\/code> <code class=\"java plain\">java.util.List;<\/code><\/div><div class=\"line number10 index9 alt1\"><code class=\"java keyword\">import<\/code> <code class=\"java plain\">java.util.Properties;<\/code><\/div><div class=\"line number11 index10 alt2\"><code class=\"java keyword\">import<\/code> <code class=\"java plain\">javax.imageio.ImageIO;<\/code><\/div><div class=\"line number12 index11 alt1\"><code class=\"java keyword\">import<\/code> <code class=\"java plain\">de.contecon.imageutils.CcXMPMetaData;<\/code><\/div><div class=\"line number13 index12 alt2\"><code class=\"java keyword\">import<\/code> <code class=\"java plain\">de.contecon.picapport.plugins.IPicApportPlugInLogger;<\/code><\/div><div class=\"line number14 index13 alt1\"><code class=\"java keyword\">import<\/code> <code class=\"java plain\">de.contecon.picapport.plugins.otherformats.IOtherFileFormat;<\/code><\/div><div class=\"line number15 index14 alt2\"><code class=\"java keyword\">import<\/code> <code class=\"java plain\">de.contecon.picapport.plugins.otherformats.OtherFormatsDescriptor;<\/code><\/div><div class=\"line number16 index15 alt1\"><code class=\"java preprocessor\">\/**<\/code><\/div><div class=\"line number17 index16 alt2\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">* This is a simple example of a PicApport plugin. <\/code><\/div><div class=\"line number18 index17 alt1\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">* To compile this at least a picapport.jar version 3.3 or newer is required.<\/code><\/div><div class=\"line number19 index18 alt2\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">* This Plugin supports .gif and .png files.<\/code><\/div><div class=\"line number20 index19 alt1\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">* <\/code><\/div><div class=\"line number21 index20 alt2\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">* PicApport plugins for other fileformats must implement de.contecon.picapport.plugins.otherformats.IOtherFileFormat<\/code><\/div><div class=\"line number22 index21 alt1\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">* <\/code><\/div><div class=\"line number23 index22 alt2\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">* Please have in mind that a valid PicApport plugin .jar files MUST have a Manifest.mf file<\/code><\/div><div class=\"line number24 index23 alt1\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">* with a PicApport-Plugin: entry. <\/code><\/div><div class=\"line number25 index24 alt2\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">*\u00a0 <\/code><\/div><div class=\"line number26 index25 alt1\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">* Example Manifest.mf:<\/code><\/div><div class=\"line number27 index26 alt2\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">* &lt;pre&gt;<\/code><\/div><div class=\"line number28 index27 alt1\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">* Manifest-Version: 1.0<\/code><\/div><div class=\"line number29 index28 alt2\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">* Sealed: true<\/code><\/div><div class=\"line number30 index29 alt1\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">* PicApport-Plugin: de.contecon.picapport.plugin.javaimage.JavaImagePlugin<\/code><\/div><div class=\"line number31 index30 alt2\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">* &lt;pre&gt;<\/code><\/div><div class=\"line number32 index31 alt1\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">* 10.02.2015<\/code><\/div><div class=\"line number33 index32 alt2\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">* @author Eric<\/code><\/div><div class=\"line number34 index33 alt1\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java preprocessor\">*\/<\/code><\/div><div class=\"line number35 index34 alt2\"><code class=\"java keyword\">public<\/code> <code class=\"java keyword\">class<\/code> <code class=\"java plain\">JavaImagePlugin <\/code><code class=\"java keyword\">implements<\/code> <code class=\"java plain\">IOtherFileFormat {<\/code><\/div><div class=\"line number36 index35 alt1\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java keyword\">private<\/code> <code class=\"java plain\">IPicApportPlugInLogger logger;<\/code><\/div><div class=\"line number37 index36 alt2\"><code class=\"java spaces\">\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number38 index37 alt1\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java color1\">@Override<\/code><\/div><div class=\"line number39 index38 alt2\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java keyword\">public<\/code> <code class=\"java plain\">List&lt;OtherFormatsDescriptor&gt; init(File pluginDirectory, Properties props, IPicApportPlugInLogger logger) {<\/code><\/div><div class=\"line number40 index39 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">this<\/code><code class=\"java plain\">.logger = logger;<\/code><\/div><div class=\"line number41 index40 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number42 index41 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">return<\/code>\u00a0 <code class=\"java plain\">Arrays.asList(<\/code><\/div><div class=\"line number43 index42 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">OtherFormatsDescriptor[] {<\/code><\/div><div class=\"line number44 index43 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">OtherFormatsDescriptor(<\/code><code class=\"java string\">\".gif\"<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number45 index44 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java string\">\"image\/gif\"<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number46 index45 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">true<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number47 index46 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java string\">\"PicApport GIF plugin\"<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number48 index47 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java string\">\"(c) 2014 Contecon Software GmbH\"<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number49 index48 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java string\">\"1.0\"<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number50 index49 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">props),<\/code><\/div><div class=\"line number51 index50 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number52 index51 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">OtherFormatsDescriptor(<\/code><code class=\"java string\">\".png\"<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number53 index52 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java string\">\"image\/png\"<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number54 index53 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">true<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number55 index54 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java string\">\"PicApport PNG plugin\"<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number56 index55 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java string\">\"(c) 2014 Contecon Software GmbH\"<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number57 index56 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java string\">\"1.0\"<\/code><code class=\"java plain\">, <\/code><\/div><div class=\"line number58 index57 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">props),\u00a0\u00a0\u00a0 <\/code><\/div><div class=\"line number59 index58 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">});\u00a0\u00a0 <\/code><\/div><div class=\"line number60 index59 alt1\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div><div class=\"line number61 index60 alt2\"><code class=\"java spaces\">\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number62 index61 alt1\"><code class=\"java spaces\">\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number63 index62 alt2\"><code class=\"java spaces\">\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number64 index63 alt1\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java color1\">@Override<\/code><\/div><div class=\"line number65 index64 alt2\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java keyword\">public<\/code> <code class=\"java plain\">CcXMPMetaData createJpegFile(File otherFormatFile, File jpegFileToCreate, CcXMPMetaData metaDataIn) <\/code><code class=\"java keyword\">throws<\/code> <code class=\"java plain\">Exception {<\/code><\/div><div class=\"line number66 index65 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">BufferedImage bi = ImageIO.read(otherFormatFile);<\/code><\/div><div class=\"line number67 index66 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number68 index67 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">BufferedImage bufferedImageJpg = <\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">BufferedImage(bi.getWidth(), bi.getHeight(), BufferedImage.TYPE_INT_RGB);<\/code><\/div><div class=\"line number69 index68 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">Graphics2D g2 = bufferedImageJpg.createGraphics();<\/code><\/div><div class=\"line number70 index69 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">g2.drawImage(bi, <\/code><code class=\"java value\">0<\/code><code class=\"java plain\">, <\/code><code class=\"java value\">0<\/code><code class=\"java plain\">, bufferedImageJpg.getWidth(), bufferedImageJpg.getHeight(), Color.WHITE, <\/code><code class=\"java keyword\">null<\/code><code class=\"java plain\">);<\/code><\/div><div class=\"line number71 index70 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">javax.imageio.ImageIO.write(bufferedImageJpg,<\/code><code class=\"java string\">\"jpeg\"<\/code><code class=\"java plain\">, jpegFileToCreate);<\/code><\/div><div class=\"line number72 index71 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">g2.dispose();<\/code><\/div><div class=\"line number73 index72 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number74 index73 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">Calendar dateCreated = Calendar.getInstance();<\/code><\/div><div class=\"line number75 index74 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">dateCreated.setTime(<\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">Date(otherFormatFile.lastModified()));<\/code><\/div><div class=\"line number76 index75 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">metaDataIn.setCreationDate(dateCreated);<\/code><\/div><div class=\"line number77 index76 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">metaDataIn.setTitle(otherFormatFile.getName());<\/code><\/div><div class=\"line number78 index77 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">metaDataIn.setDescription(<\/code><code class=\"java string\">\"PicApport JavaImagePlugin\"<\/code><code class=\"java plain\">);<\/code><\/div><div class=\"line number79 index78 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number80 index79 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">return<\/code><code class=\"java plain\">(metaDataIn);<\/code><\/div><div class=\"line number81 index80 alt2\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div><div class=\"line number82 index81 alt1\"><code class=\"java plain\">}<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><\/div><p>\u00a0<\/p><h3 id=\"PicApportPlug-inGuide-TheManifestFile\">The Manifest File<\/h3><p>A PicApport plug-in is represented and installed by a .jar file. This .jar\u00a0<strong>MUST<\/strong>\u00a0have a Manifest.mf file with a\u00a0<strong><em>PicApport-Plugin:<\/em><\/strong>\u00a0entry where the class implementing the\u00a0<strong><em>de.contecon.picapport.plugins.otherformats.IOtherFileFormat<\/em><\/strong>\u00a0is delared.<\/p><p>\u00a0<\/p><div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\"><div class=\"codeHeader panelHeader pdl\"><b>Manifest.mf<\/b><\/div><div class=\"codeContent panelContent pdl\"><div><div id=\"highlighter_439455\" class=\"syntaxhighlighter sh-confluence nogutter  text\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\" title=\"Hint: double-click to select code\"><div class=\"line number1 index0 alt2\"><code class=\"text plain\">Manifest-Version: 1.0<\/code><\/div><div class=\"line number2 index1 alt1\"><code class=\"text plain\">Sealed: true<\/code><\/div><div class=\"line number3 index2 alt2\"><code class=\"text plain\">PicApport-Plugin: de.contecon.picapport.plugin.javaimage.JavaImagePlugin<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><\/div><h3 id=\"PicApportPlug-inGuide-Theplug-in.zipfile\">The plug-in\u00a0 .zip file<\/h3><p>The last step is to create a zip file for the plug-in.\u00a0 The filename should be the classname of the plug-in.<\/p><p>The .zip file should contain at least:<\/p><ul><li>The .jar file of the plug-in<\/li><li>The.properties-file of the plugin<\/li><\/ul><p>Optional content can be:<\/p><ul><li>Other .jar files required by the plugin<\/li><li>License information files<\/li><li>Any other files<\/li><\/ul>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cd31512 e-flex e-con-boxed e-con e-parent\" data-id=\"cd31512\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>PicApport Plug-in Guide General Version Plug-ins have been introduced in PicApport 4.0.0. So all you need as a\u00a0picapport.jar\u00a0or\u00a0picapport.exe\u00a0with Version 4.0 or later. Available Plug-ins Currently (Feb 2015) we offer the following plug-ins. Please check\u00a0http:\/\/picapport.de\/plugins.php\u00a0for updates. \u00a0 PicApportJavaImagePlugin-1.0.ziphttp:\/\/picapport.de\/plugins.php Simple plug-in based on Java imageIO and TwelveMonkeys. The following meta-data is supported: title (set to original filename) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1302","page","type-page","status-publish","hentry","entry"],"_links":{"self":[{"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/pages\/1302","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/comments?post=1302"}],"version-history":[{"count":4,"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/pages\/1302\/revisions"}],"predecessor-version":[{"id":1306,"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/pages\/1302\/revisions\/1306"}],"wp:attachment":[{"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/media?parent=1302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}