locked
Question about Hdmake for deepzoom image creation and licensing RRS feed

  • Question

  • I have been exploring deepzoom for a website I am creating.  I can dynamically create deepzoom images when a user uploads a photo using the deepzoomcomposer.dll.  The problem I'm having with that is that there are definitive lines between each tile as you zoom in, which makes it look unprofessional.  A user in the deepzoom forums pointed me to hdmake and said it didn't have the same issues with lines between tiles which brings me here.

    My first question is, are there plans to make this into a dll that can be called via API's from an asp.net website?  As I mentioned above, I would like to be able to dynamically create deepzoom images as users upload images to my site.  I realize I could pass in parameters to hdmake.exe to create them, but I'm not sure if I can actually execute that exe from my hosted web page.  A dll would get around any potential issues of not being able to run the exe.  I would like these to be deepzoom images so that I can use the deepzoom viewer via Seadragon (not Silverlight--yet another thing a client would need to download before they could view my page) so that users don't have to install any software.  I'm just investigating hdview and hdmake, but it appears that users would need to download some software before they view hdview images, which I'm trying to avoid.

    The second question is regarding licensing.  I noticed that the license states that this can't be used for commercial websites or projects.  Is that going to change?  Or are you planning to charge for its use when it is officially released?  I realize this is in development right now, but I would like to know the roadmap for the project so I can determine if I should keep following or if it will never be something I am able to use on my site.  What is the timeframe for a general release?

    Anyway, I haven't had much time to play with it yet, but the user from the deepzoom forums that referred me hear stated that hdmake is a lot faster and doesn't have the lines between tiles as you zoom in.  I am assuming he meant that I could create deepzoom images with hdmake, and view them with the deepzoom viewer as opposed to the hdview viewer (please correct me if I'm wrong).

    Thanks in advance!
    Wednesday, July 29, 2009 8:52 PM

Answers

  • In order to get rid of the seams (lines) between the tiles you should set tileOverlap to something bigger than 0, ideally 1:

                    Dim
     ic As
     New
     ImageCreator() 
    ic.TileSize = 254
    ic.TileFormat = ImageFormat.Jpg
    ic.ImageQuality = 1
    ic.TileOverlap = 1

    It can also be beneficial to set TileSize to 254 so the resulting tiles will not exceed 256x256 and therefore have better performance characteristics due to texture buffering.

    Cheers,
    Daniel
    Tuesday, August 4, 2009 6:17 PM

All replies

  • I'm not sure exactly what DLL you refer to, but the standard way to create Deep Zoom content is with DeepZoomTools.dll. It won't create lines between the tiles.

    Dan
    Wednesday, July 29, 2009 9:07 PM
  • I'm sorry--you are correct on the name of the dll.  I haven't used it in awhile and didn't have it in front of me.  Anyway, the whole reason I ended up over here in this forum is because I am having issues with seeing lines between the tiles.  Perhaps I'm doing something wrong in my coding using the dll and if so, please let me know.  Another user responded in the other forum when I first posted this and said "that's just the way it is right now--hopefully they fix it" so it appears to be a known issue.  From the other forum, here is what I said:

    I'm really interested in using Deep Zoom for an asp.net project I am working on.  I am using the DeepZoomTools.dll and can successfully generate an image and display it in a viewer using SeaDragon Ajax (I'm not using Silverlight for this project).  However, I have noticed that when I zoom in on the picture, I can see lines that seem to be around the tiles (outlining the square tile).  It looks like it is where the square tiles have been stitched together.  I've tried all sorts of options with tilesize, tileoverlap, etc and no matter what I do, the lines are still present when you zoom in.  I've tried with both the December and February released of deepzoomtools.dll, but both do the same thing.  Please let me know how I can remove the lines around the tiles from my pictures as I zoom in.

    Here is my code:
    Dim imagepath As String = fi.FullName 
                    Dim ic As New ImageCreator() 
                    ic.TileSize = 256 
                    ic.TileFormat = ImageFormat.Jpg 
                    ic.ImageQuality = 1 
                    ic.TileOverlap = 0 
     
                    Dim target As String = Server.MapPath("~/output_images/") + System.IO.Path.GetFileNameWithoutExtension(imagepath) 
                    If System.IO.File.Exists(Server.MapPath("~/output_images/") + System.IO.Path.GetFileNameWithoutExtension(imagepath) & ".dzi") = False Then 
                        ic.Create(imagepath, System.IO.Path.ChangeExtension(target, ".dzi")) 
                    End If 
     
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="deepzoomtest.aspx.vb" Inherits="deepzoomtest" %> 
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
     
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 
        <title></title> 
        <script type="text/javascript" src="http://seadragon.com/ajax/0.8/seadragon-min.js"></script> 
            <script type="text/javascript"> 
                var viewer = null; 
     
                function init() { 
                    viewer = new Seadragon.Viewer("container"); 
                    viewer.openDzi("http://localhost:4292/jQueryContextMenuFaxAndDelete/output_images/d1.dzi"); 
                } 
     
                Seadragon.Utils.addEvent(window, "load", init); 
            </script> 
             
            <style type="text/css"> 
                #container 
                { 
                    width: 400px; 
                    height: 300px; 
                    background-color: black; 
                    border: 1px solid black; 
                    color: white;   /* for error messages, etc. */ 
                } 
            </style> 
    </head> 
    <body> 
        <form id="form1" runat="server"> 
        <div id="container"> 
         
        </div> 
        </form> 
    </body> 
    </html> 
    Any assistance you could provide would be appreciated.
    Thursday, July 30, 2009 2:48 AM
  • In order to get rid of the seams (lines) between the tiles you should set tileOverlap to something bigger than 0, ideally 1:

                    Dim
     ic As
     New
     ImageCreator() 
    ic.TileSize = 254
    ic.TileFormat = ImageFormat.Jpg
    ic.ImageQuality = 1
    ic.TileOverlap = 1

    It can also be beneficial to set TileSize to 254 so the resulting tiles will not exceed 256x256 and therefore have better performance characteristics due to texture buffering.

    Cheers,
    Daniel
    Tuesday, August 4, 2009 6:17 PM
  • Daniel,
    Thanks for the reply.  I updated the settings in my code based on what you posted above, and also updated the Deepzoomtools.dll to the latest July 22 release.  It worked!  No space between the tiles.  I'll post my complete code in hopes that it may help someone else someday.  Thanks again!

    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="deepzoomtest.aspx.vb" Inherits="deepzoomtest" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script type="text/javascript" src="http://seadragon.com/ajax/0.8/seadragon-min.js"></script>
            <script type="text/javascript">
                var viewer = null;
    
                function init() {
                    viewer = new Seadragon.Viewer("container");
                    viewer.openDzi("http://localhost:4292/myproj/output_images/monv838-hubble-20040304.dzi");
                }
    
                Seadragon.Utils.addEvent(window, "load", init);
            </script>
            
            <style type="text/css">
                #container
                {
                    width: 400px;
                    height: 300px;
                    background-color: black;
                    border: 1px solid black;
                    color: white;   /* for error messages, etc. */
                }
            </style>
    </head>
    <body>
        <form id="form1" runat="server">
        <div id="container">
        
        </div>
        </form>
    </body>
    </html>
    And the code behind:

    Imports Microsoft.DeepZoomTools
    Imports System
    Imports System.Collections.Generic
    Imports System.Linq
    Imports System.Text
    Imports Path = System.IO.Path
    Imports System.IO
    Imports System.IO.Path
    Partial Class deepzoomtest
        Inherits System.Web.UI.Page
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            'create deepzoom image
            Dim di As New directoryinfo(Server.MapPath("~/images"))
    
            For Each fi As FileInfo In di.GetFiles("*.jpg")
                Try
                    'Dim imagepath As String = Server.MapPath("~/images/h1.jpg")
                    Dim imagepath As String = fi.FullName
                    Dim ic As New ImageCreator()
                    ic.TileSize = 254
                    ic.TileFormat = ImageFormat.Jpg
                    ic.ImageQuality = 1
                    ic.TileOverlap = 1
    
                    Dim target As String = Server.MapPath("~/output_images/") + System.IO.Path.GetFileNameWithoutExtension(imagepath)
                    If System.IO.File.Exists(Server.MapPath("~/output_images/") + System.IO.Path.GetFileNameWithoutExtension(imagepath) & ".dzi") = False Then
                        ic.Create(imagepath, System.IO.Path.ChangeExtension(target, ".dzi"))
                    End If
                Catch ex As Exception
                End Try
            Next
    
    
        End Sub
    End Class
    Tuesday, August 4, 2009 8:18 PM
  • Hi!

    Is it possible to use HDMAKE.EXE to stitch more images together to panoramic image with commandline?

    If not is it possible to do it with C# with use of deepzoomcomposer.dll?

    Is deepzoomcomposer.dll using same image stitch engine as ICE?

    Can anybody suggest good command line tool (or a web service) that can create panoramic photos based on multiple images, something Microsoft Image Composite Editor, but which can be automized with DLL or command line?

    Thanks

    Bye
    Wednesday, January 13, 2010 3:46 PM