{"id":13550210,"url":"https://github.com/ruven/iipmooviewer","last_synced_at":"2025-04-02T23:32:09.044Z","repository":{"id":47319767,"uuid":"2320427","full_name":"ruven/iipmooviewer","owner":"ruven","description":"IIPMooViewer is an advanced javascript HTML5 image viewer for streaming high resolution scientific images","archived":false,"fork":false,"pushed_at":"2025-02-04T12:14:27.000Z","size":1309,"stargazers_count":125,"open_issues_count":18,"forks_count":49,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-02-04T13:23:53.541Z","etag":null,"topics":["iiif","image-blending","image-viewer"],"latest_commit_sha":null,"homepage":"https://iipimage.sourceforge.io","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ruven.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"ruven"}},"created_at":"2011-09-03T19:50:16.000Z","updated_at":"2025-02-04T12:14:31.000Z","dependencies_parsed_at":"2024-01-15T18:13:20.919Z","dependency_job_id":"2408172b-2793-4845-8db8-baf4cab4dae0","html_url":"https://github.com/ruven/iipmooviewer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruven%2Fiipmooviewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruven%2Fiipmooviewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruven%2Fiipmooviewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruven%2Fiipmooviewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruven","download_url":"https://codeload.github.com/ruven/iipmooviewer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246911306,"owners_count":20853653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["iiif","image-blending","image-viewer"],"created_at":"2024-08-01T12:01:30.264Z","updated_at":"2025-04-02T23:32:09.034Z","avatar_url":"https://github.com/ruven.png","language":"JavaScript","funding_links":["https://github.com/sponsors/ruven"],"categories":["JavaScript"],"sub_categories":[],"readme":"IIPMooViewer\n============\n\n\nAbout\n-----\nIIPMooViewer is a high performance light-weight HTML5 Ajax-based javascript image streaming and zooming client designed for the IIPImage high resolution imaging system. It is compatible with Firefox, Chrome, Internet Explorer (Versions 6-10), Safari and Opera as well as mobile touch-based browsers for iOS and Android. Although designed for use with the IIP protocol and IIPImage, it has multi-protocol support and is additionally compatible with the Zoomify, Deepzoom, Djatoka (OpenURL) and IIIF protocols.\n\nVersion 2.0 of IIPMooViewer is HTML5/CSS3 based and uses the Mootools javascript framework (version 1.6+). \n\n\nFeatures\n--------\n* Fast and light-weight\n* Pan and zoom of ultra high resolution imaging\n* Multi-protocol support: IIP, Zoomify, Deepzoom, Djatoka (OpenURL) and IIIF protocols\n* Image rotation\n* Mobile device support: iOS and Android\n* HTML5 Fullscreen API support\n* Annotations of regions of images\n* Synchronized viewer capability\n* Image blending comparison\n* Localization\n\n\nInstallation\n------------\nThe distribution contains all the necessary library files in both compressed and uncompressed formats. Modify the parameters in the index.html template example file provided.\n\n\nServer\n------\nYou first must have a working version of the IIPImage server running if you want to use the IIP protocol and features. See http://iipimage.sourceforge.net for details. IIPMooViewer, however, also supports the IIIF protocol if you have an IIIF server, or the Zoomify and Deepzoom protocols if you are unable to install the server or are working in a legacy environment.\n\n\nImages\n------\nCreate a pyramidal tiled TIFF image using VIPS (http://vips.sf.net) or imagemagick. Or JPEG2000 if you have a JPEG2000 enabled IIPImage server.\n\n\nConfiguration\n-------------\nNow modify the path and image names in the example HTML page provided - index.html - to create a working client :-)\n\u003cpre\u003e\n    var iipmooviewer = new IIPMooViewer( \"viewer\", {\n\t  image: \"/path/to/image.tif\",\n\t  credit: \"My Title\"\n    });\n\u003c/pre\u003e\n\nNote that IIPMooViewer works best when it's in its own page. If you wish to embed it in a page, you may specify any div within your page or alternatively use an `\u003ciframe\u003e` if you wish to keep the IIPMooViewer code separate. Note that to enable fullscreen when using an `\u003ciframe\u003e`, add the `allowFullScreen` attribute to the `\u003ciframe\u003e` tag.\n\nDistribution\n------------\n/js : the necessary minified iipmooviewer and mootools javascript files\n\n/css : iip.css and ie.css (for Internet Explorer)\n\n/images : icons and image files\n\n/src : uncompressed source javascript files\n\nThe minified files are created with the [closure compiler](https://developers.google.com/closure/compiler/) with the following command:\n\u003cpre\u003e\njava -jar /path/to/compiler.jar --js src/mootools-more-1.6.0.js --js src/iipmooviewer-2.0.js --js src/navigation.js --js src/scale.js --js src/touch.js --js src/protocols/iip.js --js src/annotations.js --js src/blending.js --js src/lang/help.en.js --js_output_file js/iipmooviewer-2.0-min.js --compilation_level SIMPLE_OPTIMIZATIONS\n\u003c/pre\u003e\n\nYou can thereby customize your build to include only those components you need. For example, if you require Zoomify or do not require annotation support, simply add or remove these from the build. Make sure, however, that the core iipmooviewer js file is included before the other components. Otherwise, if you prefer not to rebuild, use the default build and add the extra components you want as extra includes.\n\n\nOptions\n-------\n\nOptions to the IIPMooViewer class constructor: (The only obligatory \noption is the \u003cb\u003eimage\u003c/b\u003e variable)\n\n\u003cb\u003eimage\u003c/b\u003e : The full system path to the image. On Windows as on other systems this \n       should be a UNIX style path such as \"/path/to/image.tif\". Note that this is an\n       absolute system path and not the path relative to the webserver root\n\n\u003cb\u003eserver\u003c/b\u003e : The address of the IIPImage server. [default: \"/fcgi-bin/iipsrv.fcgi\"]\n\n\u003cb\u003ecredit\u003c/b\u003e : a credit, copyright or information to be shown on the image itself\n\n\u003cb\u003erender\u003c/b\u003e : the way in which tiles are rendered. Either `random' where the \n        tiles are fetched and rendered randomly or 'spiral' where the \n        tiles are rendered from the center outwards [default: \"spiral\"]\n\n\u003cb\u003eshowNavWindow\u003c/b\u003e : whether to show the navigation window. [default: true]\n\n\u003cb\u003eshowNavButtons\u003c/b\u003e : whether to show the navigation buttons on start up: true \n        or false [default: true]\n\n\u003cb\u003enavWinSize\u003c/b\u003e : ratio of navigation window size to the main window.\n\tWide panoramas are scaled to twice this size [default: 0.2]\n\n\u003cb\u003enavigation\u003c/b\u003e : a hash containing options for the navigation box:\n   (a) id: the id of the element where the navigation box will be embedded. Defaults to the main container.\n   (b) draggable: a boolean, indicating whether the navigation box is draggable. Defaults to true, however, if a navigation id is specified, defaults to false.\n   (c) buttons: an array of the available buttons: reset, zoomIn, zoomOut, rotateLeft, rotateRight.\n   (d) image: an alternative image to be used (with the same IIP server) for the navigation overview.\n   The default is the following:\n\u003cpre\u003e\n  navigation: {\n    draggable: true,\n    buttons: ['reset','zoomIn','zoomOut']\n  }\n\u003c/pre\u003e\n\n\u003cb\u003eshowCoords\u003c/b\u003e : whether to show live screen coordinates [default: false]\n\n\u003cb\u003escale\u003c/b\u003e : adds a scale to the image. Specify the number of pixels per units. Should be given in pixels per mm if the default meter unit is used. Otherwise pixels per degree if degree units are used. If set to true, DPI will be retrieved directly from image server\n\n\u003cb\u003eunits\u003c/b\u003e : define the units used. Can be in degrees or meters [default: meters]. Or define completely new unit system. The default structure is the following:\n\u003cpre\u003e\n  units: {\n    dims:   [\"pm\", \"nm\", \"\u0026#181;m\", \"mm\", \"cm\", \"m\", \"km\"], // Unit suffixes\n    orders: [ 1e-12, 1e-9, 1e-6, 0.001, 0.01, 1, 1000 ],    // Unit orders\n    mults: [1,2,5,10,50,100],                               // Different scalings usable for each unit\n    factor: 1000                                            // Default multiplication factor\n  }\n\u003c/pre\u003e\n\n\u003cb\u003eprefix\u003c/b\u003e: path prefix if image subdirectory moved (for example to a different host) [default: \"images/\"]\n\n\u003cb\u003eenableFullscreen\u003c/b\u003e : allow full screen mode. If \"native\" will attempt to use Javascript Fullscreen API. Otherwise it will fill the viewport. \"page\" allows fullscreen but only in viewport fill mode. False disables. [default: \"native\"]\n\n\u003cb\u003ewinResize\u003c/b\u003e : whether view is reflowed on window resize. [default: true]\n\n\u003cb\u003eviewport\u003c/b\u003e : object containing center x, y, resolution, rotation and contrast of initial view. For example, to \nstart \nat resolution 4 with the center of the view port at both 90% of the size of the image:\n\u003cpre\u003e{resolution:4, x:0.9, y:0.9, rotation:0}\u003c/pre\u003e\n\n\u003cb\u003eprotocol\u003c/b\u003e : protocol to use with the server: iip, zoomify, deepzoom or iiif [default: \"iip\"]\n\n\u003cb\u003eformat\u003c/b\u003e : image format to request for tiles when using IIP or IIIF protocol (JPEG, WebP, AVIF, PNG etc depending on image server capabilities)\n\n\u003cb\u003epreload\u003c/b\u003e : preload an extra layer of tiles surrounding the viewport [default: false]\n\n\u003cb\u003edisableHash\u003c/b\u003e : disable setting viewport through the hashchange event. See the section \"Linking to a Specific View\" below [default: enabled]\n\n\u003cb\u003eannotations\u003c/b\u003e : An object containing object structures with parameters \"x\", \"y\", \"w\", \"h\", \"title\", \"text\", \"category\" where x, y, w and h are the position and size of the annotation in relative [0-1] values, title is an optional title for the annotation, category is an optional category for the annotation and text is the body of the annotation\n\n\nPublic Functions\n----------------\n\n\u003cb\u003egetRegionURL()\u003c/b\u003e: If using the default IIP protocol, this functions returns the IIPImage server URL needed to export the region of the image within the view port as a single image. Thus, to export the current view, call this function and use the result as the source of an image. This example exports, when the user presses the \"p\" key, the view into a new window which can then be saved as a whole image.\n\u003cpre\u003e\n    window.addEvent('keypress', function(e){\n      if( e.key == \"p\" ) window.open(iipmooviewer.getRegionURL());\n    });\n\u003c/pre\u003e\n\n\u003cb\u003erotate(x)\u003c/b\u003e: Rotate the view by \u003ci\u003ex\u003c/i\u003e degrees\n\n\u003cb\u003emoveTo(x,y)\u003c/b\u003e: Move the view to position \u003ci\u003ex\u003c/i\u003e,\u003ci\u003ey\u003c/i\u003e at the current resolution, where x,y are the coordinates of the top left of the view port.\n\n\u003cb\u003ecenterTo(x,y)\u003c/b\u003e: Center the view at relative position \u003ci\u003ex\u003c/i\u003e,\u003ci\u003ey\u003c/i\u003e at the current resolution, where x,y are resolution independent \ncoordinate ratios (0.0 -\u003e 1.0 ) of the center of the view port.\n\n\u003cb\u003ezoomIn()\u003c/b\u003e: Zoom in by a factor of 2\n\n\u003cb\u003ezoomOut()\u003c/b\u003e: Zoom out by a factor of 2\n\n\u003cb\u003ezoomTo(z)\u003c/b\u003e: Zoom to a particular resolution, \u003ci\u003ez\u003c/i\u003e\n\n\u003cb\u003esetCredit(t)\u003c/b\u003e: (Re)set the text in credits to the HTML given by \u003ci\u003et\u003c/i\u003e\n\n\u003cb\u003erecenter()\u003c/b\u003e: Center our view\n\n\u003cb\u003ereload()\u003c/b\u003e: Reinitialize our view, using the initial viewport settings if given during class initialization\n\n\u003cb\u003echangeImage(i)\u003c/b\u003e: Load a new image, \u003ci\u003ei\u003c/i\u003e, and reinitialize the viewer\n\n\u003cb\u003etoggleNavigationWindow()\u003c/b\u003e: toggle the navigation window\n\n\u003cb\u003etoggleFullScreen()\u003c/b\u003e: toggle fullscreen mode\n\n\u003cb\u003etoggleAnnotations()\u003c/b\u003e: toggle display of annotations\n\n\u003cb\u003eprint()\u003c/b\u003e: print current image view\n\nAnnotations\n-----------\nYou can supply a list of annotations for the image which will be overlaid while\nnavigating the image. These must be supplied in an object containing a list of\nindividual annotation objects, each with parameters describing the size,\nposition, title, category and text. The size is set by the w,h properties, and\nthe position is described by the x,y properties (top-left offset). The size and\nposition (obligatory) parameters are ratios (i.e go from `0.0` to `1.0`) of the\nimage's dimensions. The `text` parameter provides the content of the annotation\nand can contain any valid HTML, which can be styled normally via CSS. All\nannotations are created as divs of class `annotation`.\n\nFor example:\n\u003cpre\u003e\n  var annotations = {\n     1: { x: 0.7, y: 0.6, w: 0.2, h: 0.18, category: \"pigments\", text: \"prussian blue\" },\n     2: { x: 0.1, y: 0.8, w: 0.15, h: 0.1, category: \"pigments\", text: \"azurite\" },\n     3: { x: 0.7, y: 0.4, w: 0.1, h: 0.1, category: \"people\", text: \"Mary\" }\n  };\n\u003c/pre\u003e\n\nThe 1,2,3 are unique IDs which can be either numbers or strings.\nThe created element's ID is the annotation's ID with `annotation-` prepended.\n\nCategories are ways of creating groups of annotations and the category will be added to the class. Thus for a category of, for example, 'retouches' the annotation divs will be of class 'annotation retouches', allowing you to access these via a class selector. So, for example, to set the colors of these differently to the others, simply with javascript, use a selector:\n\u003cpre\u003e\n$$('.annotation.retouches').setStyle('borderColor', \"blue\")\n\u003c/pre\u003e\n\nor in CSS:\n\u003cpre\u003e\n.annotation.retouches{\n  border-color: blue;\n}\n\u003c/pre\u003e\n\nAnnotation editing is possible by including the `annotations-edit.js` file, which extends the `IIPMooViewer` class. The function `newAnnotation()` creates a new blank annotation in the centre of the view. Double click on any existing annotation to move, resize of modify it. When an update occurs, an `annotationChange` event occurs, which can be captured and used to send the results back to a server via an AJAX call.\n\nFor example, to send the updated list of annotations back to `annotations.php`:\n\n\u003cpre\u003e\n  iipmooviewer.addEvent('annotationChange', function(action, annotation_id) {\n    var data = {id: annotation_id, action: action};\n    // `action` is either `updated` or `deleted`\n    if (action == 'updated') {\n      // If the annotation has been updated, send the updated data.\n      data.annotation = JSON.encode(this.annotations[annotation_id]);\n    }\n    var metadata = new Request.JSON({\n      method: 'post',\n      url: 'annotations.php',\n      data: data\n    }).send();\n  });\n\u003c/pre\u003e\n\n\nSynchronized Views\n------------------\nIt is possible to synchronize two or more instances of iipmooviewer, so that they will zoom, pan and rotate at the same time. To do this, simply create your viewers and synchronize them together using the IIPMooViewer.synchronize() function, which takes an array of viewer instances. For example:\n\n\u003cpre\u003e\n  // Create viewers\n  var viewer1 = new IIPMooViewer( \"viewer1\", {\n    image: 'image1.tif'\n  });\n  var viewer2 = new IIPMooViewer( \"viewer2\", {\n    image: 'image2.tif',\n    showNavWindow: false, // Only show navigation window on first viewer\n    showNavButtons: false\n  });\n\n  // Synchronize our viewers\n  IIPMooViewer.synchronize([viewer2,viewer1]);\n\u003c/pre\u003e\n\n\nEvents\n------\nIIPMooViewer fires the 'load' event when it has fully finished loading. To attach to this event, use the addEvent function:\n\u003cpre\u003e\n\tiipmooviewer.addEvent('load', function(){\n\t\t// do something\n\t});\n\u003c/pre\u003e\n\n\nProtocols\n---------\nIIPMooViewer supports the IIP, Zoomify, Deepzoom, Djatoka and IIIF protocols. By default it will use IIP, but to use, for example Zoomify, first include the protocol after the other javascript includes as this is not included by default:\n\n\u003cpre\u003e\n  \u0026lt;script src=\"src/protocols/zoomify.js\"\u0026gt;\u0026lt;/script\u0026gt;\n\u003c/pre\u003e\n\nProtocols such as zoomify don't have a server as such, so set this value to / or to the path prefix for the image. For example, if you have an image with URL /images/zoomify/image1, use:\n\n\u003cpre\u003e\nnew IIPMooViewer( \"viewer\", {\n   server: \"/images/zoomify/\",\n   image: \"image1\",\n   protocol: \"zoomify\"\n});\n\u003c/pre\u003e\n\nNote that for Deepzoom, the image name should be name of the .dzi or .xml Deepzoom index file.\n\nLocalization\n------------\nA number of localizations exist in the src/lang folder. To use, simply include the desired language file as an extra javascript include. To create a new localization, create a new or modify an existing localization file and include this extra javascript file.\n\nFor example to create a new Chinese localization, create the file lang/help.zh.js and include it after the main iipmooviewer includes:\n\n\u003cpre\u003e\n  \u0026lt;script src=\"javascript/mootools-core-1.6.0-compressed.js\"\u0026gt;\u0026lt;/script\u0026gt;\n  \u0026lt;script src=\"javascript/iipmooviewer-2.0-compressed.js\"\u0026gt;\u0026lt;/script\u0026gt;\n  \u0026lt;script src=\"src/lang/help.zh.js\"\u0026gt;\u0026lt;/script\u0026gt;\n\u003c/pre\u003e\n\nImage Blending\n--------------\nIt's also possible to load several registered images for comparison and blend between them using a slider to compare. This is useful, for example, for comparing scientific imagery, multispectral or images taken at different times of the same scene or object. Images should all be of the same size and be precisely registered. The blending functionality is in src/blending.js and is built by default into the main minimized iipmooviewer js file in the js/ folder. There are two blending modes available. The first provides a pair of drop down menus from which to select the blended images and a slider blend between them. The second blending modes provides a simpler interface with a single slider that allows the user to transition sequentially between all the blended images.\n\nMenu-driven blending mode is activated via the \"blend()\" function. To use, simply load the the viewer as normal with the default image, but use the blend() function to provide a list of all images and text for use in the selection box as in the following example:\n\n\u003cpre\u003e\nvar iipmooviewer = new IIPMooViewer( \"targetframe\", {\n  image: 'color.tif',\n  credit: 'Compare scientific images'\n});\n\niipmooviewer.blend( [ ['color.tif','color'],\n                      ['uv.tif','ultra-violet'],\n                      ['ir.tif','infra-red'],\n                      ['xray.tif','X-ray']\n                    ] );\n\u003c/pre\u003e\n\n\nFor sequential slider-driven blending use the \"multiblend()\" function:\n\n\u003cpre\u003e\nvar iipmooviewer = new IIPMooViewer( \"targetframe\", {\n  image: 'color.tif',\n  credit: 'Compare scientific images'\n});\n\niipmooviewer.multiblend( [ ['color.tif','color'],\n                           ['uv.tif','ultra-violet'],\n                           ['ir.tif','infra-red'],\n                           ['xray.tif','X-ray']\n                         ] );\n\u003c/pre\u003e\n\n\nFor a more simple single menu based image selection to enable switching between images, use the \"menu()\" function:\n\n\u003cpre\u003e\nvar iipmooviewer = new IIPMooViewer( \"targetframe\", {\n  image: 'color.tif',\n  credit: 'Select between registered images'\n});\n\niipmooviewer.menu( [ ['color.tif','color'],\n                     ['uv.tif','ultra-violet'],\n                     ['ir.tif','infra-red'],\n                     ['xray.tif','X-ray']\n                   ] );\n\u003c/pre\u003e\n\n\n\nLinking to a Specific View\n--------------------------\nA hash tag in the form x, y, resolution can be appended to the URL to \nlink to a particular area within the image at a particular resolution. \nx and y should be resolution-independent ratios from 0.0 -\u003e 1.0 and the resolution an integer representing the desired resolution \nnumber (where 0 is the smallest resolution).\nFor example:\n\u003cpre\u003ehttp://your.server/iipmooviewer/test.html#0.5,0.5,5\u003c/pre\u003e \nwill set the initial view of the image to the x,y coordinate 0.5, 0.5 (the center of the image) at resolution number 5.\n\nThe \u003ci\u003ehashchange\u003c/i\u003e event is also used if supported by the browser to update the view if the coordinates change. This can be used, for example, to \nmaintain a sequence or history of view changes.\n\nUse control-c in order to obtain the tagged URL of the current view.\n\nTo disable this feature, add \"disableHash: true\" to the constructor.\n\n\nStyling\n-------\nIt is possible to restyle widgets such as the credit information box. Simply create your own CSS rule to override the default rule for:\n\u003cpre\u003e.iipmooviewer .credit\u003c/pre\u003e\nto change the font, background or borders etc.\n\n\nGallery\n-------\nIf you have a series of images, it's possible to use IIPMooViewer within an image gallery. A Gallery component is available in src/gallery.js with a minified version in js/gallery.min.js. This provides a light-weight, ergonomic and fully responsive gallery component which is mobile-friendly and fully touch-enabled. The input list of images can be provided either as a JSON object within your HTML itself or via an Ajax request.\n\nTo use the gallery component, make sure you include both the gallery CSS and JS files:\n\n\u003cpre\u003e\n  \u0026lt;link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"css/gallery.min.css\" /\u0026gt;\n  \u0026lt;script src=\"js/gallery.min.js\"\u0026gt;\u0026lt;/script\u0026gt;\n\u003c/pre\u003e\n\nTo create the component, simply create an instance of the class with the URL of your JSON.\n\n\u003cpre\u003e\n  \u0026lt;script\u0026gt;\n    // Create our image gallery and load our list of images from JSON \n    new Gallery( \"targetframe\", {\n      images: \"gallery.json\"\n    });\n  \u0026lt;/script\u0026gt;\n\u003c/pre\u003e\n\nThe list of images should be structured as an array as in the following example:\n\u003cpre\u003e\n  [\n     {\n       image: \"/path/image1.tif\",\n       caption: \"caption 1\",\n       title: \"Title 1\",\n       scale: 20.0,\n       server: \"/fcgi-bin/iipsrv.fcgi\"\n     },\n     {\n       image: \"/path/image2.tif\",\n       caption: \"caption 2\",\n       title: \"Title 2\",\n       scale: 10.0,\n       server: \"/fcgi-bin/iipsrv.fcgi\"\n     }\n  ];\n\u003c/pre\u003e\n\nThe \"image\" parameter is mandatory, otherwise all other parameters are optional. If \"server\" is not set, the default IIPImage server path /fcgi-bin/iipsrv.fcgi is used. The caption field, if provided, will be overlaid on the viewer, whereas the title field, if given, provides a tooltip when the mouse is over the image. The scale option is a value for the scale for the given image in pixels/mm and is used in the same way as a scale given to IIPMooViewer directly. An example HTML template is provided in the provided gallery.html.\n\n### Gallery Functions\n\ngoTo( n ): switch view to image within gallery with index _n_\n\n\nLicensing\n---------\niipmooviewer is released under the GNU General Public License (GPL). See the copyright notice COPYING in this directory for licensing details or go to \nhttp://www.gnu.org/licenses/gpl.html for more details.\n\n\n------------------------------------------------------------------------------------\nPlease refer to the project site https://iipimage.sourceforge.io for further details\n\n------------------------------------------------------------------------------------\n\n\u003cpre\u003e(c) 2007-2024 Ruven Pillay \u003cruven@users.sourceforge.net\u003e\u003c/pre\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruven%2Fiipmooviewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fruven%2Fiipmooviewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruven%2Fiipmooviewer/lists"}