public override bool LoadData(byte[] data, ImagePackage package) { // Create it now: SPAFile = new SPA(package.location.absoluteNoHash, data); return(true); }
public override bool LoadData(byte[] data, ImagePackage package) { // Create it now: GifFile = new Gif(data); return(true); }
/// <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); }
/// <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>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); }
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); }
/// <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(); }
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); }
/// <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); } }
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); }
/// <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; } }
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); } } }
/// <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; } }
/// <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(); }
/// <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(); }
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); }
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(); }
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(); }
public void ProcessRequest(HttpContext Context) { #region Note //<img src="${siteurl}Timthumb.ashx?src=${item.Images.Bigimg}&h=95&w=142&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(); }
/// <summary> /// 处理图片报文 /// </summary> /// <param name="imagePackage"></param> private void HandleImage(ImagePackage imagePackage) { throw new NotImplementedException(); }