zoukankan      html  css  js  c++  java
  • arcgis开发笔记【DeepZoom应用】

    对于图片的显示DeepZoom是个非常棒的技术。

    项目中由于需要对于一个高分辨率的图片进行拖动、放大、Zoom out等操作,

    DeepZoom实现这个功能是小菜一碟

    具体的使用就是:

    使用DeepZoom Composer建立一个项目,最后导出结果,然后silverlight引用

    这个发布的服务地址即可

    1、导出的结果为:

    2、silverlight使用的方法:

    但由于项目中涉及的这种图片文件非常的多,如果手工一个个的处理,太浪费时间,

    因此需要一个工具自动化的处理这个问题。

    http://blogs.msdn.com/zxue/archive/2010/05/05/handy-tools-complimentary-to-deep-zoom-composer.aspx?utm_source=feedburner&utm_medium=twitter&utm_campaign=Feed%3A+Microsoft%2FMSDN-Blogs+(MSDN+Blogs)

    这个地址实现的是一个旧版本的DeepZoom Composer自动处理的方法。

    在新版本的DeepZoom Composer[DeepZoomCompose.exe 1.0.0.0]中可以采用如下的方法实现:

    1、引用库文件DeepZoom Composer 1.0版本的.dll文件DeepZoomTools.DLL

    2、自动处理代码如下:

    SparseImageCreator的形式

                SparseImageCreator ic = new SparseImageCreator();

                ic.TileFormat = ImageFormat.Jpg;

                ic.ImageQuality = 1;//0.95;

                ic.TileOverlap = 0;

                Microsoft.DeepZoomTools.Image img = new Microsoft.DeepZoomTools.Image(@"C:\Users\Public\Pictures\Sample Pictures\Hydrangeas.jpg");

                List<Microsoft.DeepZoomTools.Image> images = new List<Microsoft.DeepZoomTools.Image>() { img };

                ic.Create(images, @"D:\test\silverlight\UntitledProject1\Exported Data\ss\GeneratedImages\dzc_output");

    CollectionCreator的形式

    ….

    {

         string source = @"C:\Users\Public\Pictures\Sample Pictures";

                string dest = @"C:\Users\Public\Pictures\Sample Pictures";

                List<string> images = GetImagesInDirectory(source);

                List<string> data = new List<string>();

                foreach (var image in images)

                {

                    ImageCreator ic = new ImageCreator();

                    ic.TileSize = 256;

                    ic.TileFormat = ImageFormat.Jpg;

                    ic.ImageQuality = 0.95;

                    ic.TileOverlap = 0;

                    string target = dest + "\\output_images\\" + Path.GetFileNameWithoutExtension(image);

                    ic.Create(image, target);

                    data.Add(Path.ChangeExtension(target, ".xml"));

                }

                CollectionCreator cc = new CollectionCreator();

                cc.TileSize = 256;

                cc.TileFormat = ImageFormat.Jpg;

                cc.MaxLevel = 8;

                cc.ImageQuality = 0.95;

                cc.Create(data, dest + "\\output");

            }

            private static List<string> GetImagesInDirectory(string path)

            {

                return GetImagesInDirectory(new DirectoryInfo(path));

            }

            private static List<string> GetImagesInDirectory(DirectoryInfo di)

            {

                List<string> images = new List<string>();

                // get all the images in this directory first

                foreach (var fi in di.GetFiles("*.jpg"))

                {

                    images.Add(fi.FullName);

                }

                // get all the directories with their images

                foreach (var sub in di.GetDirectories())

                {

                    images.AddRange(GetImagesInDirectory(sub));

                }

                return images;

            }

    这样只要确定固定的目录后,可以一次把所有目录的文件按照同样的规则转换一遍,以后更新图片时,使用这个工具转一次即可。

  • 相关阅读:
    一点一点学ASP.NET系列
    深入理解JavaScript系列
    MVVM模式应用体会
    SQL查询oracle的nclob字段
    CSLA多语言设置
    用2个无线路由器桥接实现扩大无线范围方法
    DevExpress的GridControl控件设置自定义显示方法
    android配置开发环境
    warning MSB3162: 所选的“Microsoft Report Viewer 2012 Runtime”项需要“Microsoft.SqlServer.SQLSysClrTypes.11.0”。在“系统必备”对话框中选择缺少的系统必备组件,或者为缺少的系统必备组件创建引导程序包。
    GDI+实现双缓冲绘图方法一
  • 原文地址:https://www.cnblogs.com/2018/p/1732265.html
Copyright © 2011-2022 走看看