Ejemplo n.º 1
0
 /// <summary>
 /// Creates a new image of the specified size from the source image
 /// </summary>
 /// <param name="src">Source image path</param>
 /// <param name="dest">Destination image path</param>
 /// <param name="imgCfg">The configuration of the image</param>
 /// <param name="bShadow">Create the image with a shadow</param>
 /// <param name="forceUpdate">Update in every case</param>
 /// <param name="jpegQuality">The Quality for the JPEG File 0..100</param>
 public void CreateImage(String src, string dest, ImageBrowserConfig.ImageCfg imgCfg, bool bShadow, bool forceUpdate, byte jpegQuality)
 {
   if(bShadow)
     CreateShadowedImage(src, dest, imgCfg, forceUpdate, jpegQuality);
   else
     CreateSimpleImage(src, dest, imgCfg, forceUpdate, jpegQuality);
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 
 /// </summary>
 public ImageTools(Portal.API.Module m)
 {
   currentModule = m;
   cfg = (ImageBrowserConfig)currentModule.ReadConfig(typeof(ImageBrowserConfig));
   if(cfg == null)
     cfg = new ImageBrowserConfig();
 }
Ejemplo n.º 3
0
 /// <summary>
 ///
 /// </summary>
 public ImageTools(Portal.API.Module m)
 {
     currentModule = m;
     cfg           = (ImageBrowserConfig)currentModule.ReadConfig(typeof(ImageBrowserConfig));
     if (cfg == null)
     {
         cfg = new ImageBrowserConfig();
     }
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Outputs some navigation links to the page.
        /// </summary>
        /// <param name="controlCollection">the pages' contols</param>
        /// <param name="path">The path of the current image directory being browsed</param>
        /// <param name="url">The URL to use in the links</param>
        public static void RendenderLinkPath(System.Web.UI.ControlCollection controlCollection, string path, System.Web.UI.Control ctrl, ImageBrowserConfig cfg)
        {
            HyperLink h = null;
            Literal l = null;

            if ( path != null && path.Length > 0 )
                path = path.Replace(@"\","/");
            else
            {
                h = new HyperLink();
                h.NavigateUrl = "";
                h.Text = cfg.RootName;
                h.Attributes.Add("class","LinkButton");
                controlCollection.Add(h);
                return;
            }

            string[] paths = path.Split('/');

            paths[0] = cfg.RootName;

            for ( int i = 1; i <= paths.Length; i++ )
            {

                if ( i < paths.Length )
                {
                    h = new HyperLink();
                    h.NavigateUrl = ctrl.Page.GetPostBackClientHyperlink(ctrl, "directory;" + string.Join("/",paths,0,i).Replace(cfg.RootName,""));
                    h.Text = paths[i-1];
                    h.Attributes.Add("class","LinkButton");
                    controlCollection.Add(h);

                    l = new Literal();
                    l.Text = " &raquo; \n";
                    controlCollection.Add(l);
                }
                else
                {
                    h = new HyperLink();
                    h.NavigateUrl = "";
                    h.Text = paths[i-1];
                    h.Attributes.Add("class","LinkButton");
                    controlCollection.Add(h);
                }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Outputs some navigation links to the page.
        /// </summary>
        /// <param name="controlCollection">the pages' contols</param>
        /// <param name="path">The path of the current image directory being browsed</param>
        /// <param name="url">The URL to use in the links</param>
        public static void RendenderLinkPath(System.Web.UI.ControlCollection controlCollection, string path, System.Web.UI.Control ctrl, ImageBrowserConfig cfg)
        {
            HyperLink h = null;
            Literal   l = null;

            if (path != null && path.Length > 0)
            {
                path = path.Replace(@"\", "/");
            }
            else
            {
                h             = new HyperLink();
                h.NavigateUrl = "";
                h.Text        = cfg.RootName;
                h.Attributes.Add("class", "LinkButton");
                controlCollection.Add(h);
                return;
            }

            string[] paths = path.Split('/');

            paths[0] = cfg.RootName;

            for (int i = 1; i <= paths.Length; i++)
            {
                if (i < paths.Length)
                {
                    h             = new HyperLink();
                    h.NavigateUrl = ctrl.Page.GetPostBackClientHyperlink(ctrl, "directory;" + string.Join("/", paths, 0, i).Replace(cfg.RootName, ""));
                    h.Text        = paths[i - 1];
                    h.Attributes.Add("class", "LinkButton");
                    controlCollection.Add(h);

                    l      = new Literal();
                    l.Text = " &raquo; \n";
                    controlCollection.Add(l);
                }
                else
                {
                    h             = new HyperLink();
                    h.NavigateUrl = "";
                    h.Text        = paths[i - 1];
                    h.Attributes.Add("class", "LinkButton");
                    controlCollection.Add(h);
                }
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Outputs some navigation links to the page.
        /// </summary>
        /// <param name="controlCollection">the pages' controls</param>
        /// <param name="path">The path of the current image directory being browsed</param>
        /// <param name="url">The URL to use in the links</param>
        public static void RendenderLinkPath(System.Web.UI.ControlCollection controlCollection, string path, System.Web.UI.Control ctrl, ImageBrowserConfig cfg)
        {
            HyperLink h = null;
            Literal   l = null;

            DirectorySettingsHandler RootSettings = new DirectorySettingsHandler(cfg.PictureRootDirectory, "My Pictures");

            if (path != null && path.Length > 0)
            {
                path = path.Replace(@"\", "/");
            }
            else
            {
                h             = new HyperLink();
                h.NavigateUrl = "";
                h.Text        = RootSettings.DirectoryCaption;
                h.Attributes.Add("class", "LinkButton");
                controlCollection.Add(h);
                return;
            }

            string[] paths = path.Split('/');

            paths[0] = RootSettings.DirectoryCaption;

            for (int i = 1; i <= paths.Length; i++)
            {
                DirectorySettingsHandler DirSetting = new DirectorySettingsHandler(
                    cfg.PictureRootDirectory + "\\" + string.Join("\\", paths, 0, i).Replace(RootSettings.DirectoryCaption, ""), paths[i - 1]);
                if (i < paths.Length)
                {
                    h             = new HyperLink();
                    h.NavigateUrl = ctrl.Page.GetPostBackClientHyperlink(ctrl, "directory;" + string.Join("/", paths, 0, i).Replace(RootSettings.DirectoryCaption, "") + ";0");
                    h.Text        = DirSetting.DirectoryCaption;
                    h.Attributes.Add("class", "LinkButton");
                    controlCollection.Add(h);

                    l      = new Literal();
                    l.Text = " &raquo; \n";
                    controlCollection.Add(l);
                }
                else
                {
                    h             = new HyperLink();
                    h.NavigateUrl = "";
                    h.Text        = DirSetting.DirectoryCaption;
                    h.Attributes.Add("class", "LinkButton");
                    controlCollection.Add(h);
                }
            }
        }
Ejemplo n.º 7
0
    /// <summary>
    /// Creates a new image of the specified size from the source image
    /// </summary>
    /// <param name="src">Source image path</param>
    /// <param name="dest">Destination image path</param>
    /// <param name="imgCfg">The configuration of the image</param>
    /// <param name="forceUpdate">Update in every case</param>
    /// <param name="jpegQuality">The Quality for the JPEG File 0..100</param>
    protected void CreateSimpleImage( string src, string dest, ImageBrowserConfig.ImageCfg imgCfg, bool forceUpdate, byte jpegQuality )
    {
      try
      {
        if (!forceUpdate && File.Exists(cfg.PictureRootDirectory + "/" + dest))
          return;

        string path = Directory.GetParent(cfg.PictureRootDirectory + "/" + dest).FullName;

        if (!Directory.Exists(path))
          Directory.CreateDirectory(path);

        using (Image thumb = CreateImageInternal(src, imgCfg.MaxSize))
        {
          if (thumb != null)
          {
            EncoderParameters encParams = new EncoderParameters(1);
            encParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long) jpegQuality);
            thumb.Save(cfg.PictureRootDirectory + "/" + dest, GetEncoder(ImageFormat.Jpeg), encParams);
          }
        }
      }
      catch(Exception){}
    }
Ejemplo n.º 8
0
    /// <summary>
    /// Creates the files to build a shadow arround a picture.
    /// </summary>
    /// <param name="imgCfg">the shadow configuration of the picture</param>
    /// <param name="path">the directory where the files should be located</param>
    public void CreateShadowParts(ImageBrowserConfig.ImageCfg imgCfg, String path)
    {
      // Values for building Shadow.
      Int32 shadowwidth = imgCfg.ShadowWidth;
      Int32 margin = shadowwidth / 2;

      // background
      LayeredImage image = new LayeredImage(shadowwidth * 2 + margin + 1, shadowwidth * 2 + margin + 1);
      Layer bg = image.Layers.Add();
      bg.Clear(Color.FromArgb(imgCfg.BackgroundColor));

      // shadow -- layer must be larger because of blur
      Layer shadow = image.Layers.Add(shadowwidth * 2 + margin, shadowwidth * 2 + margin);
      SolidBrush brush = new SolidBrush(Color.FromArgb(imgCfg.ShadowColor));
      shadow.FillRectangle(margin, margin, shadowwidth + margin + 1, shadowwidth + margin + 1, brush);
      if (imgCfg.SoftShadow)
        shadow.Blur(margin * 2, margin * 2);
      brush.Dispose();
      shadow.Opacity = 1.0 - imgCfg.ShadowTransparency;

      // Result with all the parts.
      FastBitmap totalResult = image.Flatten();

      // Create Directory if necessary.
      if ( ! Directory.Exists(path)) 
        Directory.CreateDirectory(path);

      // Save Shadow into splittet files.
      // Top-right.
      FastBitmap imgTR = new FastBitmap(shadowwidth, shadowwidth, PixelFormat.Format32bppArgb);
      totalResult.CopyTo (imgTR, 0, 0, margin + shadowwidth + 1, 0, shadowwidth, shadowwidth);
      imgTR.Save(path + "/tr.jpg", ImageFormat.Jpeg);

      // Right.
      FastBitmap imgR = new FastBitmap(shadowwidth, 1, PixelFormat.Format32bppArgb);
      totalResult.CopyTo (imgR, 0, 0, margin + shadowwidth + 1, margin + shadowwidth, shadowwidth, 1);
      imgR.Save(path + "/r.jpg", ImageFormat.Jpeg);

      // Bottom-right.
      FastBitmap imgBR = new FastBitmap(shadowwidth, shadowwidth, PixelFormat.Format32bppArgb);
      totalResult.CopyTo(imgBR, 0, 0, margin + shadowwidth + 1, margin + shadowwidth + 1, shadowwidth, shadowwidth);
      imgBR.Save(path + "/br.jpg", ImageFormat.Jpeg);

      // Bottom.
      FastBitmap imgB = new FastBitmap(1, shadowwidth, PixelFormat.Format32bppArgb);
      totalResult.CopyTo (imgB, 0, 0, margin + shadowwidth, margin + shadowwidth + 1, 1, shadowwidth);
      imgB.Save(path + "/b.jpg", ImageFormat.Jpeg);

      
      // Bottom-left.
      FastBitmap imgBL = new FastBitmap(shadowwidth, shadowwidth, PixelFormat.Format32bppArgb);
      totalResult.CopyTo(imgBL, 0, 0, 0, margin + shadowwidth + 1, shadowwidth, shadowwidth);
      imgBL.Save(path + "/bl.jpg", ImageFormat.Jpeg);
    }
Ejemplo n.º 9
0
    /// <summary>
    /// Creates a new image of the specified size from the source image
    /// </summary>
    /// <param name="src">Source image path</param>
    /// <param name="dest">Destination image path</param>
    /// <param name="imgCfg">The configuration of the image</param>
    /// <param name="forceUpdate">Update in every case</param>
    /// <param name="jpegQuality">The Quality for the JPEG File 0..100</param>
    public void CreateShadowedImage(string src, string dest, ImageBrowserConfig.ImageCfg imgCfg, bool forceUpdate, byte jpegQuality)
    {
      try
      {
        if (!forceUpdate && File.Exists(cfg.PictureRootDirectory + "/" + dest) ) 
          return;

        string path = Directory.GetParent(cfg.PictureRootDirectory + "/" + dest).FullName;

        if ( ! Directory.Exists(path)) 
          Directory.CreateDirectory(path);

        // Values for building Shadow.
        Int32 shadowwidth = imgCfg.ShadowWidth;
        Int32 borderwidth = imgCfg.BorderWidth;
        Int32 margin = shadowwidth / 2;
        Int32 shadowdir = 0;
        Double shadowtrans = imgCfg.ShadowTransparency;
        Color bkcolor = Color.FromArgb(imgCfg.BackgroundColor);
        Color shadowcolor = Color.FromArgb(imgCfg.ShadowColor);
        Color bordercolor = Color.FromArgb(imgCfg.BorderColor);
        Boolean softshadow = imgCfg.SoftShadow;

        Image thumb = CreateImageInternal(src, imgCfg.MaxSize);
        if(thumb != null)
        {
          FastBitmap tmp = new FastBitmap(thumb);

          FastBitmap bmp = new FastBitmap(tmp.Width + borderwidth * 2, tmp.Height + borderwidth * 2,
            PixelFormat.Format32bppArgb);

          // add border if necessary
          if (borderwidth > 0) 
          {
            using(SolidBrush br = new SolidBrush(bordercolor))
            using (Graphics g = Graphics.FromImage(bmp._bitmap))
            {
              g.FillRectangle(br, 0, 0, borderwidth * 2 + tmp.Width, borderwidth * 2 + tmp.Height);
            }
          }

          tmp.CopyTo(bmp, borderwidth, borderwidth, 0, 0, tmp.Width, tmp.Height);
          tmp.Dispose();

          // create image

          Int32 width = bmp.Width + shadowwidth + margin * 2;
          Int32 height = bmp.Height + shadowwidth + margin * 2;
          LayeredImage image = new LayeredImage(width, height);

          Int32 shadowx = 0, shadowy = 0, imgx = 0, imgy = 0;

          if (softshadow) 
          {
            switch (shadowdir) 
            {
              case 0:
                shadowx = margin - shadowwidth / 2;
                shadowy = margin - shadowwidth / 2;
                imgx = margin;
                imgy = margin;
                break;
              case 1:
                shadowx = margin + shadowwidth - 3 * (shadowwidth / 2);
                shadowy = margin - shadowwidth / 2;
                imgx = margin + shadowwidth;
                imgy = margin;
                break;
              case 2:
                shadowx = margin + shadowwidth - 3 * (shadowwidth / 2);
                shadowy = margin + shadowwidth - 3 * (shadowwidth / 2);
                imgx = margin + shadowwidth;
                imgy = margin + shadowwidth;
                break;
              case 3:
                shadowx = margin - shadowwidth / 2;
                shadowy = margin + shadowwidth - 3 * (shadowwidth / 2);
                imgx = margin;
                imgy = margin + shadowwidth;
                break;
            }
          } 
          else 
          {
            switch (shadowdir) 
            {
              case 0:
                shadowx = margin;
                shadowy = margin;
                imgx = margin;
                imgy = margin;
                break;
              case 1:
                shadowx = margin - shadowwidth;
                shadowy = margin;
                imgx = margin + shadowwidth;
                imgy = margin;
                break;
              case 2:
                shadowx = margin - shadowwidth;
                shadowy = margin - shadowwidth;
                imgx = margin + shadowwidth;
                imgy = margin + shadowwidth;
                break;
              case 3:
                shadowx = margin;
                shadowy = margin - shadowwidth;
                imgx = margin;
                imgy = margin + shadowwidth;
                break;
            }
          }

          // background
          Layer bg = image.Layers.Add();
          bg.Clear(bkcolor);

          // shadow -- layer must be larger because of blur
          Layer shadow = image.Layers.Add(width + shadowwidth, height + shadowwidth);
          SolidBrush brush = new SolidBrush(shadowcolor);
          shadow.FillRectangle(shadowwidth, shadowwidth, bmp.Width, bmp.Height, brush);
          if (softshadow)
            shadow.Blur(shadowwidth, shadowwidth);
          brush.Dispose();
          shadow.OffsetX = shadowx;
          shadow.OffsetY = shadowy;
          shadow.Opacity = 1.0 - shadowtrans;

          // image
          Layer img = image.Layers.Add(bmp);
          img.OffsetX = imgx;
          img.OffsetY = imgy;

          // result
          FastBitmap result = image.Flatten();

          EncoderParameters encParams = new EncoderParameters(1);
          encParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long) jpegQuality);
          result.Save(cfg.PictureRootDirectory + "/" + dest, GetEncoder(ImageFormat.Jpeg), encParams);
          result.Dispose();
        }
      }
      catch(Exception){}
    }
Ejemplo n.º 10
0
		/// <summary>
		/// Outputs some navigation links to the page.
		/// </summary>
		/// <param name="controlCollection">the pages' controls</param>
		/// <param name="path">The path of the current image directory being browsed</param>
		/// <param name="url">The URL to use in the links</param>
		public static void RendenderLinkPath(System.Web.UI.ControlCollection controlCollection, string path, System.Web.UI.Control ctrl, ImageBrowserConfig cfg)
		{

			HyperLink h = null;
			Literal l = null;

      DirectorySettingsHandler RootSettings = new DirectorySettingsHandler(cfg.PictureRootDirectory, "My Pictures");

			if ( path != null && path.Length > 0 )
				path = path.Replace(@"\","/");
			else
			{
				h = new HyperLink();
				h.NavigateUrl = "";
				h.Text = RootSettings.DirectoryCaption;
				h.Attributes.Add("class","LinkButton");
				controlCollection.Add(h);
				return;
			}

			string[] paths = path.Split('/');

			paths[0] = RootSettings.DirectoryCaption;

			for ( int i = 1; i <= paths.Length; i++ )
			{
        DirectorySettingsHandler DirSetting = new DirectorySettingsHandler(
          cfg.PictureRootDirectory + "\\" + string.Join("\\",paths,0,i).Replace(RootSettings.DirectoryCaption,""), paths[i-1]);
        if ( i < paths.Length )
				{
					h = new HyperLink();
					h.NavigateUrl = ctrl.Page.GetPostBackClientHyperlink(ctrl, "directory;" + string.Join("/",paths,0,i).Replace(RootSettings.DirectoryCaption,"") + ";0");
					h.Text = DirSetting.DirectoryCaption;
					h.Attributes.Add("class","LinkButton");
					controlCollection.Add(h);

					l = new Literal();
					l.Text = " &raquo; \n";
					controlCollection.Add(l);
				}
				else
				{
					h = new HyperLink();
					h.NavigateUrl = "";
					h.Text = DirSetting.DirectoryCaption;
					h.Attributes.Add("class","LinkButton");
					controlCollection.Add(h);
				}
			}
		}