Ejemplo n.º 1
0
        public override bool LoadData(byte[] data, ImagePackage package)
        {
            // Create it now:
            SPAFile = new SPA(package.location.absoluteNoHash, data);

            return(true);
        }
Ejemplo n.º 2
0
        public override bool LoadData(byte[] data, ImagePackage package)
        {
            // Create it now:
            GifFile = new Gif(data);

            return(true);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 根据Uri获取ImageSource
        /// </summary>
        /// <param name="image"></param>
        /// <param name="uriSource"></param>
        /// <param name="cancellationTokenSource"></param>
        /// <returns></returns>
        private async Task <ImageSource> RequestUri(Image image, Uri uriSource, CancellationTokenSource cancellationTokenSource)
        {
            //Debug模式不允许Decoders,直接采用默认方案
            if (DesignMode.DesignModeEnabled)
            {
                image.Source = new BitmapImage(uriSource);
                return(null);
            }
            ImagePackage package = null;

            package = await this.CurrentLoader.LoadImage(image, uriSource, cancellationTokenSource);

            if (package == null)
            {
                throw new Exception("package is null");
            }
            Interlocked.Exchange(ref _imagePackage, package);
            await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                if (_isControlLoaded)
                {
                    _imagePackage?.Decoder?.Start();
                }
            });

            this.PixelWidth  = package.PixelWidth;
            this.PixelHeight = package.PixelHeight;

            return(package.ImageSource);
        }
Ejemplo n.º 4
0
        /// <summary>Manually apply an image package to the background of this element.</summary>
        public void SetImage(ImagePackage package)
        {
            // Apply it:
            Image = package;

            // Let this object know the package is ready:
            ImageReady(package);
        }
Ejemplo n.º 5
0
        /// <summary>Caches the image in this HTTP request. Useful for preloading images with ajax.</summary>
        public void CacheImage()
        {
            // Create a package:
            ImagePackage package = new ImagePackage(Url, "");

            // Hook up the image:
            package.Image = Image;

            // Cache it:
            HttpProtocol.AddToCache(Url, package);
        }
Ejemplo n.º 6
0
        public override bool LoadData(byte[] data, ImagePackage package)
        {
            string xml = System.Text.Encoding.UTF8.GetString(data);

            // Create the SVG:
            Svg = new SVG(xml);

            // Get the rendering context:
            Context = Svg.svgElement.Context;

            return(true);
        }
Ejemplo n.º 7
0
        /// <summary>Applies the given image to the background.</summary>
        /// <param name="image">The image to use.</param>
        public void SetImage(Texture image)
        {
            Image = new ImagePackage(image);
            ImageReady(Image);
            ComputedStyle computed = RenderData.computedStyle;

            // Set the width:
            computed.ChangeTagProperty("width", Image.Width + "px");

            // And the height too:
            computed.ChangeTagProperty("height", Image.Height + "px");

            RenderData.Document.RequestLayout();
        }
Ejemplo n.º 8
0
        public override bool InternallyCached(Location path, ImagePackage package)
        {
            // Is it an animation that has been cached?

            // Might already be loaded - let's check:
            SPAFile = SPA.Get(path.absoluteNoHash);

            if (SPAFile != null)
            {
                //It's already been loaded - use that.
                package.Done();
                return(true);
            }

            return(false);
        }
Ejemplo n.º 9
0
 /// <summary>
 /// 生成缩略图
 /// </summary>
 /// <param name="obj"></param>
 public void GeneratePicture(object obj)
 {
     try
     {
         if (obj == null)
         {
             return;
         }
         ImagePackage data = (ImagePackage)obj;
         Thumbnail.MakeRemoteThumbnailImage(data.Src, data.SavePath, data.Width, data.Height, data.Model);
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
Ejemplo n.º 10
0
        public HyperLink projectCreation(Guid usersProjectId, bool prority)
        {
            var ProjObj = new BusinessLayer.ProjectBussinessObjects();

            _userProjects = ProjObj.GetProjectById(usersProjectId);

            //for getting project images
            projectsImagePackageId = (Guid)_userProjects.imagePackageId;

            var images = new BusinessLayer.ImagePackageBusinessObjects();

            userImagePackage = images.GetImagesOfProjectsById(projectsImagePackageId);

            imageList = new List <string> {
                userImagePackage.image1, userImagePackage.image2, userImagePackage.image3, userImagePackage.image4, userImagePackage.image5, userImagePackage.image6, userImagePackage.image7, userImagePackage.image8, userImagePackage.image9, userImagePackage.image10
            };


            //getting organization logo
            organizationOfProjectID = (Guid)_userProjects.organizationId;

            var currentOrganization = new BusinessLayer.OrginizationBusinessObjects();

            _projectOrganization = currentOrganization.GetOrganizationOfProjectsById(organizationOfProjectID);



            //main panel
            HyperLink ProjContent = new HyperLink();

            ProjContent.Attributes.Add("onclick", "event.preventDefault();");

            //oncontextmenu="return false;"

            //?id=" + Category.categoryId
            ProjContent.NavigateUrl = "~/uBuoyProjectDetails.aspx?progId=" + usersProjectId;
            //getting main panel content for project with priority
            projectMainPanel(prority, ProjContent);

            //getting image content in main panel
            projectImagesPanel(ProjContent);

            //getting badge and brand panel
            projectBrandAndBadgePanel(ProjContent);

            return(ProjContent);
        }
Ejemplo n.º 11
0
        /// <summary>A callback used when the graphic has been loaded and is ready for display.</summary>
        public void ImageReady(ImagePackage package)
        {
            if (!Image.Loaded())
            {
                return;
            }

            Element.OnLoaded("background-image");

            RequestLayout();

            int imageWidth  = Image.Width();
            int imageHeight = Image.Height();

            // Make sure offsets aren't bigger than the dimensions of a single image:

            if (RepeatX && OffsetX != null)
            {
                if (imageWidth == 0)
                {
                    OffsetX = null;
                }
                else
                {
                    OffsetX.PX = OffsetX.PX % imageWidth;
                }
            }

            if (RepeatY && OffsetY != null)
            {
                if (imageHeight == 0)
                {
                    OffsetY = null;
                }
                else
                {
                    OffsetY.PX = OffsetY.PX % imageHeight;
                }
            }

            if (Image != null && Filtering != FilterMode.Point && Image.Image != null)
            {
                Image.Image.filterMode = Filtering;
            }
        }
Ejemplo n.º 12
0
        private void MenuItemReplace_ItemClick(object sender, ItemClickEventArgs e)
        {
            string fileName = DialogExtensions.ShowOpenFileDialog(this, "Replace Image", "PNG Image|*.png");

            if (!fileName.IsNullOrEmpty())
            {
                FileInfo fileInfo = new(fileName);

                if (fileInfo.Length <= 12000)
                {
                    ImagePackage.LoadAsync(fileName);
                }
                else
                {
                    XtraMessageBox.Show(this, "Image file size is too big!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
Ejemplo n.º 13
0
        /// <summary>A callback used when the graphic has been loaded and is ready for display.</summary>
        public void ImageReady(ImagePackage package)
        {
            if (Image == null || !Image.Loaded)
            {
                return;
            }

            // Dispatch load (don't bubble, default):
            Dom.Event e = new Dom.Event("load");
            e.SetTrusted(false);
            RenderData.Node.dispatchEvent(e);

            RequestLayout();

            if (Image != null && Filtering != FilterMode.Point)
            {
                Image.Contents.FilterMode = Filtering;
            }
        }
Ejemplo n.º 14
0
        /// <summary>Applies the given image to the background.</summary>
        /// <param name="image">The image to use.</param>
        public void SetImage(Texture2D image)
        {
            Image = new ImagePackage(image);
            ImageReady(Image);
            ComputedStyle computed = Element.Style.Computed;

            if (!computed.FixedWidth)
            {
                // Set the width:
                computed.ChangeTagProperty("width", new Css.Value(Image.Width() + "px", Css.ValueType.Pixels));
            }

            if (!computed.FixedHeight)
            {
                // And the height too:
                computed.ChangeTagProperty("height", new Css.Value(Image.Height() + "px", Css.ValueType.Pixels));
            }

            Element.Document.Renderer.RequestLayout();
        }
Ejemplo n.º 15
0
        /// <summary>Called when an image is found for this character. Used by e.g. Emoji.</summary>
        /// <param name="package">The image that was found.</param>
        public void SetupImage(ImagePackage package)
        {
            if (package == null)
            {
                Image = null;
                return;
            }

            Image = package;

            // Great! We found this character somewhere else as an image:
            Width  = Image.Width();
            Height = Image.Height();

            // And apply delta width too:
            AdvanceWidth = Width;

            // Queue up a global layout.
            UI.document.Renderer.RequestLayout();
        }
Ejemplo n.º 16
0
        public Stream Process()
        {
            if (SourceStream != null)
            {
                if (SourceImage == null)
                {
                    SourceImage = Image.Load(SourceStream, out var format);
                    Format      = format;
                }
            }

            if (SourceImage != null)
            {
                if (SourcePackage == null)
                {
                    SourcePackage = new ImagePackage {
                        Format = Format, Image = SourceImage
                    }
                }
            }
            ;

            // Now, backfills.

            SourceImage = SourceImage ?? SourcePackage.Image;
            Format      = Format ?? SourcePackage.Format;

            foreach (var item in Items)
            {
                SourceImage = item.Process(SourceImage);
            }

            var memoryStream = new MemoryStream();

            SourceImage.Save(memoryStream, Format);

            memoryStream.Position = 0;

            return(memoryStream);
        }
Ejemplo n.º 17
0
        public override bool InternallyCached(Location path, ImagePackage package)
        {
            // GIF uses SPA's so it could cache like they do.

            return(false);
        }
		/// <summary>A callback used when the graphic has been loaded and is ready for display.</summary>
		public void ImageReady(ImagePackage package){
			if(!Image.Loaded()){
				return;
			}
			
			Element.OnLoaded("background-image");
			
			RequestLayout();
			
			int imageWidth=Image.Width();
			int imageHeight=Image.Height();
			// Make sure offsets aren't bigger than the dimensions of a single image:
			
			if(RepeatX && OffsetX!=null){
				if(imageWidth==0){
					OffsetX=null;
				}else{
					OffsetX.PX=OffsetX.PX%imageWidth;
				}
			}
			
			if(RepeatY && OffsetY!=null){
				if(imageHeight==0){
					OffsetY=null;
				}else{
					OffsetY.PX=OffsetY.PX%imageHeight;
				}
			}
			
			if(Image!=null && Filtering!=FilterMode.Point && Image.Image!=null){
				Image.Image.filterMode=Filtering;
			}
		}
		/// <summary>Manually apply an image package to the background of this element.</summary>
		public void SetImage(ImagePackage package){
			// Apply it:
			Image=package;
			
			// Let this object know the package is ready:
			ImageReady(package);
		}
		/// <summary>Applies the given image to the background.</summary>
		/// <param name="image">The image to use.</param>
		public void SetImage(Texture2D image){
			Image=new ImagePackage(image);
			ImageReady(Image);
			ComputedStyle computed=Element.Style.Computed;
			
			if(!computed.FixedWidth){
				// Set the width:
				computed.ChangeTagProperty("width",new Css.Value(Image.Width()+"px",Css.ValueType.Pixels));
			}
			
			if(!computed.FixedHeight){
				// And the height too:
				computed.ChangeTagProperty("height",new Css.Value(Image.Height()+"px",Css.ValueType.Pixels));
			}
			
			Element.Document.Renderer.RequestLayout();
		}
Ejemplo n.º 21
0
        public void ProcessRequest(HttpContext Context)
        {
            Context.Response.Clear();
            Context.Response.ClearHeaders();
            Context.Response.ClearContent();
            Context.Response.ContentType = "image/jpeg";

            string static_cache = "/cache/cache_images/";

            //接收参数
            string url = VTSRequest.GetRawUrl();
            //图片名字
            string md5 = MD5Encrypt.DataToMD5(url);

            //////////////开始分文件夹/////////////////
            string folderName = md5.Substring(0, 2);
            string imageDir   = Context.Server.MapPath(static_cache + folderName);

            if (!Directory.Exists(imageDir))
            {
                Directory.CreateDirectory(imageDir);
            }
            //////////////结束分文件夹/////////////////

            //物理地址
            string imageSavePath = string.Concat(imageDir, "\\", md5, ".jpg");

            //分析参数  http://beautify.afuli.mobi
            //示例参数:/https/storage.googleapis.com/140x80/cut/forward/beautify/Pics/1007/005/7A8A25209579C10A943A13E4C27AF54/14.jpg
            string[] urlarrs = url.Replace("http://", "").Replace("https://", "").TrimStart('/').Split('/');

            //urlarrs[0]=thumb.afuli.mobi
            //urlarrs[0]=https

            //urlarrs[1]=storage.googleapis.com
            //urlarrs[2]=140x80

            //urlarrs[3]=cut
            //urlarrs[4]=forward
            //urlarrs[5]=beautify

            //得到原始URL
            string imgUrl = string.Empty;

            //得到相对URL:/Pics/1007/005/7A8A25209579C10A943A13E4C27AF54/14.jpg
            string imgRelUrl = string.Empty;

            int beautify = url.IndexOf("beautify");

            if (beautify != -1)
            {
                //表示找到标识符beautify
                beautify += "beautify".Length;
                imgRelUrl = url.Substring(beautify);
                imgUrl    = string.Concat(urlarrs[0], "://", urlarrs[1], imgRelUrl);

                //Context.Response.Write(imgUrl + "<br />");
            }

            //最终参数
            int    w     = Convert.ToInt32(urlarrs[2].Substring(0, urlarrs[2].IndexOf('x')));
            int    h     = Convert.ToInt32(urlarrs[2].Substring(urlarrs[2].IndexOf('x') + 1));
            string model = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(urlarrs[3]);
            //int zc = VTSRequest.GetQueryInt("zc");
            string src = imgUrl;

            //Context.Response.Write(w + "<br />");
            //Context.Response.Write(h + "<br />");
            //Context.Response.Write(imgUrl + "<br />");
            /***************************************************************************************************************************************************************/

            byte[] b = null;
            if (File.Exists(imageSavePath))
            {
                #region 缓存策略
                //正确显示图片 才设置图片缓存策略
                //配置成一个星期 168小时
                Context.Response.Cache.SetExpires(DateTime.Now.AddHours(168));
                //下面的代码示例演示如何设置 Cache-Control: max-age 标题,为 0 小时,30 分钟和 0 秒。
                TimeSpan ts = new TimeSpan(168, 0, 0);
                Context.Response.Cache.SetMaxAge(ts);

                //设置Etag
                //Context.Response.Cache.SetETag(md5.ToLower());
                #endregion

                #region 响应输出
                b = VTSCommon.GetPictureData(imageSavePath);
                Context.Response.OutputStream.Write(b, 0, b.Length);
                #endregion
            }
            else
            {
                #region 修改类型
                Context.Response.ContentType = "image/gif";
                #endregion

                #region 清除缓存
                Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
                Context.Response.Cache.SetNoStore();
                #endregion

                #region 后台生成
                ImagePackage image = new ImagePackage();
                image.Src      = src;
                image.SavePath = imageSavePath;
                image.Width    = w;
                image.Height   = h;
                image.Model    = model;

                WaitCallback callBack = new WaitCallback(GeneratePicture);
                ThreadPool.QueueUserWorkItem(callBack, image);
                #endregion

                #region 响应输出
                //随机响应
                //imageSavePath = Context.Server.MapPath(string.Concat("/common/images/random/tb", ImageRandom.GetRandomInt().ToString(), ".jpg"));
                imageSavePath = Context.Server.MapPath("/common/images/process/loading.gif");
                b             = VTSCommon.GetPictureData(imageSavePath);
                Context.Response.OutputStream.Write(b, 0, b.Length);
                #endregion
            }
            Context.ApplicationInstance.CompleteRequest();
        }
Ejemplo n.º 22
0
        public void ProcessRequest(HttpContext Context)
        {
            #region Note
            //<img src="${siteurl}Timthumb.ashx?src=${item.Images.Bigimg}&amp;h=95&amp;w=142&amp;zc=1" width="142" height="95" alt="${item.title}" />
            #endregion

            Context.Response.Clear();
            Context.Response.ClearHeaders();
            Context.Response.ClearContent();
            Context.Response.ContentType = "image/jpeg";

            string static_cache  = "/cache/cache_images/";
            string static_random = "/common/images/random/tb";

            //宽度
            int w = VTSRequest.GetQueryInt("w");
            //高度
            int h = VTSRequest.GetQueryInt("h");

            //预留
            int zc = VTSRequest.GetQueryInt("zc");
            //图片地址
            string src = VTSRequest.GetQueryString("src");

            //原始 URL --一张图片一个唯一的URL地址
            string url = VTSRequest.GetRawUrl();

            //图片名字
            string md5 = MD5Encrypt.DataToMD5(url);

            //////////////开始分文件夹/////////////////
            string folderName = md5.Substring(0, 2);
            string imageDir   = Context.Server.MapPath(static_cache + folderName);

            if (!Directory.Exists(imageDir))
            {
                Directory.CreateDirectory(imageDir);
            }
            //////////////结束分文件夹/////////////////

            //物理地址
            string imageSavePath = string.Concat(imageDir, "\\", md5, ".jpg"); //Context.Server.MapPath("/cache/cache_images/" + md5 + ".jpg");

            //VTS.Log.LogOut.Info(string.Format("ManagedThreadId:{0} src:{1},url:{2}", System.Threading.Thread.CurrentThread.ManagedThreadId, src, url));
            /*******************************************************************************************************************************************************/
            byte[] b = null;

            if (File.Exists(imageSavePath))
            {
                #region 图片已存在

                #region 缓存策略
                //正确显示图片 才设置图片缓存策略
                //配置成一个星期 168小时
                Context.Response.Cache.SetExpires(DateTime.Now.AddHours(168));
                //下面的代码示例演示如何设置 Cache-Control: max-age 标题,为 0 小时,30 分钟和 0 秒。
                TimeSpan ts = new TimeSpan(168, 0, 0);
                Context.Response.Cache.SetMaxAge(ts);
                #endregion

                b = VTSCommon.GetPictureData(imageSavePath);
                Context.Response.OutputStream.Write(b, 0, b.Length);
                #endregion
            }
            else
            {
                #region 图片不存在

                #region 线程池生成
                ImagePackage image = new ImagePackage();
                image.Src      = src;
                image.SavePath = imageSavePath;
                image.Width    = w;
                image.Height   = h;

                //线程池生成
                WaitCallback callBack = new WaitCallback(GeneratePicture);
                ThreadPool.QueueUserWorkItem(callBack, image);

                //直接生成
                //GeneratePicture(image);
                #endregion

                #region 响应  随机
                imageSavePath = Context.Server.MapPath(string.Concat(static_random, ImageRandom.GetRandomInt().ToString(), ".jpg"));
                b             = VTSCommon.GetPictureData(imageSavePath);
                #endregion

                //清除缓存头策略
                Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
                Context.Response.Cache.SetNoStore();
                Context.Response.OutputStream.Write(b, 0, b.Length);
                #endregion
            }
            Context.ApplicationInstance.CompleteRequest();
        }
Ejemplo n.º 23
0
 /// <summary>
 /// 处理图片报文
 /// </summary>
 /// <param name="imagePackage"></param>
 private void HandleImage(ImagePackage imagePackage)
 {
     throw new NotImplementedException();
 }