public void CreatePostWithImageTest() { TransitPost t_post = new TransitPost(); t_post.Body = Guid.NewGuid().ToString(); t_post.Title = Guid.NewGuid().ToString(); t_post.Publish = true; t_post.Id = Blog.CreateOrUpdatePost(Ticket, t_post); Assert.Greater(t_post.Id, 0); TransitImage t_image = new TransitImage(); t_image.Name = Guid.NewGuid().ToString(); Bitmap b = new Bitmap(480, 480); Graphics g = Graphics.FromImage(b); g.FillEllipse(Brushes.Red, 0, 0, 480, 480); ThumbnailBitmap tb = new ThumbnailBitmap(b); t_image.Data = tb.Bitmap; t_image.Thumbnail = tb.Thumbnail; t_image.Id = Blog.CreateOrUpdatePostImage(Ticket, t_post.Id, t_image); Assert.Greater(t_image.Id, 0); Blog.DeletePost(Ticket, t_post.Id); }
public void TestLoadInvalid() { MemoryStream s = new MemoryStream(); ThumbnailBitmap b = new ThumbnailBitmap(s); Console.WriteLine("Size: {0}x{1}", b.FullSize.Width, b.FullSize.Height); }
public void TestResizeTransparentGIF89() { Stream sm = Assembly.GetExecutingAssembly().GetManifestResourceStream("SnCore.Tools.Tests.Images.transparent.gif"); // load original image in decoder GifDecoder originaldecoder = new GifDecoder(); originaldecoder.Read(sm); sm.Seek(0, SeekOrigin.Begin); GifDecoder.GifFrame frame = originaldecoder.GetFrame(0); Console.WriteLine("Transparency: {0} - {1}", frame.transparency, Color.FromArgb(frame.bgcolor)); // load in ThumnailBitmap Assert.IsNotNull(sm); ThumbnailBitmap b = new ThumbnailBitmap(sm); Console.WriteLine("Size: {0}x{1}", b.FullSize.Width, b.FullSize.Height); // Assert.AreEqual(b.FullSize, new Size(227, 227)); Assert.IsNotNull(b.Thumbnail); Assert.IsNotNull(b.Bitmap); // reload in decoder, verify transparency GifDecoder decoder = new GifDecoder(); decoder.Read(new MemoryStream(b.Bitmap)); frame = decoder.GetFrame(0); Console.WriteLine("Transparency: {0} - {1}", frame.transparency, Color.FromArgb(frame.bgcolor)); //FileStream f = File.Create("C:\\temp\\chefout.gif"); //f.Write(b.Bitmap, 0, b.Bitmap.Length); //f.Close(); //f = File.Create("C:\\temp\\chefthumbnail.gif"); //f.Write(b.Thumbnail, 0, b.Thumbnail.Length); //f.Close(); }
public void AtomNewImageTest() { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost/DBlog/AtomImage.aspx"); request.Method = "POST"; request.ContentType = "image/jpg"; string usernamePassword = string.Format("Administrator:"); string basicAuthorization = string.Format("Basic {0}", Convert.ToBase64String( Encoding.ASCII.GetBytes(usernamePassword))); request.Headers.Add("Authorization", basicAuthorization); byte[] postData = ThumbnailBitmap.GetBitmapDataFromText("x", 72, 100, 150); request.ContentLength = postData.Length; request.GetRequestStream().Write(postData, 0, postData.Length); request.GetRequestStream().Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string responseLocation = response.Headers["Location"]; Assert.IsNotEmpty(responseLocation); Console.WriteLine(responseLocation); // atom entry returned AtomEntry atomEntry = new AtomEntry(); atomEntry.Load(response.GetResponseStream()); Console.WriteLine(atomEntry.Id.Uri); int id = int.Parse(atomEntry.Id.Uri.ToString().Substring(atomEntry.Id.Uri.ToString().LastIndexOf("/") + 1)); Assert.IsTrue(id > 0); Console.WriteLine(string.Format("Id: {0}", id)); Blog.DeleteImage(Ticket, id); }
public void AtomUpdateImageTest() { // create image TransitImage t_image = new TransitImage(); t_image.Data = ThumbnailBitmap.GetBitmapDataFromText("x", 72, 100, 150); t_image.Name = Guid.NewGuid().ToString(); t_image.Id = Blog.CreateOrUpdateImage(Ticket, t_image); // update image HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create( string.Format("http://localhost/DBlog/AtomImage.aspx?id={0}", t_image.Id)); request.Method = "PUT"; request.ContentType = "image/jpg"; string usernamePassword = string.Format("Administrator:"); string basicAuthorization = string.Format("Basic {0}", Convert.ToBase64String( Encoding.ASCII.GetBytes(usernamePassword))); request.Headers.Add("Authorization", basicAuthorization); request.ContentLength = t_image.Data.Length; request.GetRequestStream().Write(t_image.Data, 0, t_image.Data.Length); request.GetRequestStream().Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Assert.IsTrue(response.StatusCode == HttpStatusCode.OK, string.Format("Response code was {0}", response.StatusCode)); Blog.DeleteImage(Ticket, t_image.Id); }
public void UpdateThumbnail() { WebsiteBitmap bitmap = new WebsiteBitmap(); mInstance.Bitmap = ThumbnailBitmap.GetBitmap(bitmap.GetBitmapFromWeb(mInstance.Url)); mInstance.Modified = DateTime.UtcNow; Session.Save(mInstance); }
public override void SetInstance(Picture value) { Name = value.Name; Description = value.Description; Created = value.Created; Modified = value.Modified; Type = value.Type.Name; Bitmap = value.Bitmap; Thumbnail = new ThumbnailBitmap(value.Bitmap).Thumbnail; base.SetInstance(value); }
public override void SetInstance(AccountPicture instance) { base.SetInstance(instance); Name = instance.Name; Description = instance.Description; Created = instance.Created; Modified = instance.Modified; AccountId = instance.Account.Id; Hidden = instance.Hidden; Bitmap = instance.Bitmap; Thumbnail = new ThumbnailBitmap(Bitmap).Thumbnail; Position = instance.Position; }
public override void SetInstance(AccountEventPicture instance) { base.SetInstance(instance); AccountEventId = instance.AccountEvent.Id; HasPicture = (instance.Picture != null); Picture = instance.Picture; Thumbnail = new ThumbnailBitmap(instance.Picture).Thumbnail; Name = instance.Name; Description = instance.Description; AccountId = instance.Account.Id; AccountName = instance.Account.Name; Created = instance.Created; Modified = instance.Modified; Position = instance.Position; }
public void TestTooSmallGIF89() { Stream sm = Assembly.GetExecutingAssembly().GetManifestResourceStream("SnCore.Tools.Tests.Images.small.gif"); // load original image in decoder GifDecoder originaldecoder = new GifDecoder(); originaldecoder.Read(sm); sm.Seek(0, SeekOrigin.Begin); GifDecoder.GifFrame frame = originaldecoder.GetFrame(0); Console.WriteLine("Transparency: {0} - {1}", frame.transparency, Color.FromArgb(frame.bgcolor)); // load in ThumnailBitmap Assert.IsNotNull(sm); ThumbnailBitmap b = new ThumbnailBitmap(sm); Console.WriteLine("Size: {0}x{1}", b.FullSize.Width, b.FullSize.Height); }
public void CreateAnimatedGIFTest() { MemoryStream ms = new MemoryStream(); AnimatedGifEncoder encoder = new AnimatedGifEncoder(); // encoder.SetDelay(200); encoder.SetFrameRate(5); encoder.Start(ms); for (char i = 'a'; i <= 'z'; i++) { Console.Write(i.ToString()); encoder.AddFrame(ThumbnailBitmap.GetBitmapFromText(i.ToString(), 48, 100, 200)); } encoder.Finish(); Console.WriteLine(); }
public void ResizeAnimatedGIFTest() { string filename = Path.GetTempFileName(); Console.WriteLine("Creating: {0}", filename); string resizedfilename = Path.GetTempFileName(); Console.WriteLine("Resizing: {0}", resizedfilename); try { using (FileStream ms = File.OpenWrite(filename)) { AnimatedGifEncoder encoder = new AnimatedGifEncoder(); encoder.SetFrameRate(5); encoder.Start(ms); for (char i = 'a'; i <= 'e'; i++) { Console.Write(i.ToString()); encoder.AddFrame(ThumbnailBitmap.GetBitmapFromText( i.ToString(), 48, 300, 200)); } Console.WriteLine(); encoder.Finish(); ms.Flush(); } using (FileStream ms = File.OpenRead(filename)) { using (FileStream resizedms = File.OpenWrite(resizedfilename)) { AnimatedGifEncoder.Resize(ms, resizedms, 200, 150, 100); resizedms.Flush(); } } } finally { if (File.Exists(filename)) { File.Delete(filename); } if (File.Exists(resizedfilename)) { File.Delete(resizedfilename); } } }
public void TestLoadGIF89() { Stream sm = Assembly.GetExecutingAssembly().GetManifestResourceStream("SnCore.Tools.Tests.Images.test.gif"); Assert.IsNotNull(sm); ThumbnailBitmap b = new ThumbnailBitmap(sm); Console.WriteLine("Size: {0}x{1}", b.FullSize.Width, b.FullSize.Height); Assert.AreEqual(new Size(592, 350), b.FullSize); Assert.IsNotNull(b.Thumbnail); Assert.IsNotNull(b.Bitmap); ThumbnailBitmap th = new ThumbnailBitmap(b.Thumbnail); Console.WriteLine("Size: {0}x{1}", th.FullSize.Width, th.FullSize.Height); // horizontal bitmap, thumbnail size assumes vertical, thumbnail adjusted to horizontal Assert.AreEqual(new Size(150, 100), th.FullSize); }
protected void files_FilesPosted(object sender, FilesPostedEventArgs e) { try { if (e.PostedFiles.Count == 0) { return; } ExceptionCollection exceptions = new ExceptionCollection(); foreach (HttpPostedFile file in e.PostedFiles) { try { TransitAccountPicture p = new TransitAccountPicture(); ThumbnailBitmap t = new ThumbnailBitmap(file.InputStream); p.Bitmap = t.Bitmap; p.Name = Path.GetFileName(file.FileName); p.Description = string.Empty; p.Hidden = true; int id = SessionManager.CreateOrUpdate <TransitAccountPicture>( p, SessionManager.AccountService.CreateOrUpdateAccountPicture); Size size = t.GetNewSize(new Size(200, 200)); inputBody.Content = string.Format("<a href=AccountPictureView.aspx?id={2}><img border=0 width={0} height={1} src=AccountPicture.aspx?id={2}></a>\n{3}", size.Width, size.Height, id, inputBody.Content); } catch (Exception ex) { exceptions.Add(new Exception(string.Format("Error processing {0}: {1}", Renderer.Render(file.FileName), ex.Message), ex)); } exceptions.Throw(); } } catch (Exception ex) { ReportException(ex); } }
public void TestLoadAll() { string[] images = Assembly.GetExecutingAssembly().GetManifestResourceNames(); foreach (string image in images) { if (!image.StartsWith("SnCore.Tools.Tests.Images.")) { continue; } Console.WriteLine(image); Stream sm = Assembly.GetExecutingAssembly().GetManifestResourceStream(image); Assert.IsNotNull(sm); ThumbnailBitmap b = new ThumbnailBitmap(sm, new Size(1, 1), ThumbnailBitmap.s_FullSize, ThumbnailBitmap.s_ThumbnailSize); Console.WriteLine("Size: {0}x{1}", b.FullSize.Width, b.FullSize.Height); Assert.IsNotNull(b.Bitmap); } }
protected void files_FilesPosted(object sender, FilesPostedEventArgs e) { try { if (e.PostedFiles.Count == 0) { return; } ExceptionCollection exceptions = new ExceptionCollection(); foreach (HttpPostedFile file in e.PostedFiles) { try { TransitAccountEventPicture p = new TransitAccountEventPicture(); ThumbnailBitmap t = new ThumbnailBitmap(file.InputStream); p.Picture = t.Bitmap; p.Name = Path.GetFileName(file.FileName); p.Description = string.Empty; p.AccountEventId = RequestId; SessionManager.CreateOrUpdate <TransitAccountEventPicture>( p, SessionManager.EventService.CreateOrUpdateAccountEventPicture); } catch (Exception ex) { exceptions.Add(new Exception(string.Format("Error processing {0}: {1}", Renderer.Render(file.FileName), ex.Message), ex)); } } gridManage.CurrentPageIndex = 0; gridManage_OnGetDataSource(sender, e); gridManage.DataBind(); exceptions.Throw(); Redirect(string.Format("AccountEventView.aspx?id={0}", RequestId)); } catch (Exception ex) { ReportException(ex); } }
public void CreatePostWithImageAndCommentTest() { // post TransitPost t_post = new TransitPost(); t_post.Body = Guid.NewGuid().ToString(); t_post.Title = Guid.NewGuid().ToString(); t_post.Publish = true; t_post.Id = Blog.CreateOrUpdatePost(Ticket, t_post); Assert.Greater(t_post.Id, 0); // image TransitImage t_image = new TransitImage(); t_image.Name = Guid.NewGuid().ToString(); Bitmap b = new Bitmap(480, 480); Graphics g = Graphics.FromImage(b); g.FillEllipse(Brushes.Red, 0, 0, 480, 480); ThumbnailBitmap tb = new ThumbnailBitmap(b); t_image.Data = tb.Bitmap; t_image.Thumbnail = tb.Thumbnail; t_image.Id = Blog.CreateOrUpdatePostImage(Ticket, t_post.Id, t_image); Assert.Greater(t_image.Id, 0); // comment TransitComment t_comment = new TransitComment(); t_comment.IpAddress = "127.0.0.1"; t_comment.LoginId = Blog.GetLogin(Ticket).Id; t_comment.Text = Guid.NewGuid().ToString(); t_comment.Id = Blog.CreateOrUpdateImageComment(Ticket, t_image.Id, t_comment); Assert.Greater(t_comment.Id, 0); Blog.DeleteImage(Ticket, t_image.Id); Blog.DeletePost(Ticket, t_post.Id); }
protected void files_FilesPosted(object sender, FilesPostedEventArgs e) { try { if (e.PostedFiles.Count == 0) { return; } ExceptionCollection exceptions = new ExceptionCollection(); foreach (HttpPostedFile file in e.PostedFiles) { try { TransitAccountPicture p = new TransitAccountPicture(); ThumbnailBitmap t = new ThumbnailBitmap(file.InputStream); p.Bitmap = t.Bitmap; p.Name = Path.GetFileName(file.FileName); p.Description = string.Empty; p.Hidden = false; SessionManager.CreateOrUpdate <TransitAccountPicture>( p, SessionManager.AccountService.CreateOrUpdateAccountPicture); } catch (Exception ex) { exceptions.Add(new Exception(string.Format("Error processing {0}: {1}", Renderer.Render(file.FileName), ex.Message), ex)); } } GetData(sender, e); exceptions.Throw(); } catch (Exception ex) { ReportException(ex); } }
public void TestLoadGIF89a() { GifDecoder a_decoder = new GifDecoder(); Stream sm = Assembly.GetExecutingAssembly().GetManifestResourceStream("SnCore.Tools.Tests.Images.animated.gif"); Console.WriteLine("Bytes: {0}", sm.Length); a_decoder.Read(sm); Console.WriteLine("Frames: {0}", a_decoder.GetFrameCount()); sm.Seek(0, SeekOrigin.Begin); Assert.IsNotNull(sm); ThumbnailBitmap b = new ThumbnailBitmap(sm); Console.WriteLine("Size: {0}x{1}", b.FullSize.Width, b.FullSize.Height); Assert.AreEqual(new Size(320, 240), b.FullSize); Assert.IsNotNull(b.Thumbnail); Assert.IsNotNull(b.Bitmap); ThumbnailBitmap th = new ThumbnailBitmap(b.Thumbnail); Console.WriteLine("Size: {0}x{1}", th.FullSize.Width, th.FullSize.Height); Assert.AreEqual(new Size(150, 100), th.FullSize); // make sure that the bitmap is still animated Console.WriteLine("Bytes: {0}", b.Bitmap.Length); GifDecoder decoder = new GifDecoder(); decoder.Read(new MemoryStream(b.Bitmap)); Console.WriteLine("Frames: {0}", decoder.GetFrameCount()); GifDecoder th_decoder = new GifDecoder(); Console.WriteLine("Bytes: {0}", b.Thumbnail.Length); th_decoder.Read(new MemoryStream(b.Thumbnail)); Console.WriteLine("Frames: {0}", th_decoder.GetFrameCount()); Assert.AreEqual(th_decoder.GetFrameCount(), decoder.GetFrameCount()); }
public void ConsumeAnimatedGIFTest() { MemoryStream ms = new MemoryStream(); AnimatedGifEncoder encoder = new AnimatedGifEncoder(); // encoder.SetDelay(200); encoder.SetFrameRate(5); encoder.Start(ms); for (char i = 'a'; i <= 'z'; i++) { Console.Write(i.ToString()); encoder.AddFrame(ThumbnailBitmap.GetBitmapFromText(i.ToString(), 48, 100, 200)); } Console.WriteLine(); encoder.Finish(); ms.Flush(); ms.Seek(0, SeekOrigin.Begin); GifDecoder decoder = new GifDecoder(); decoder.Read(ms); Console.WriteLine("Frames: {0}", decoder.GetFrameCount()); Assert.AreEqual(26, decoder.GetFrameCount()); }
public override PicturePage.TransitPicture GetRandomPictureWithThumbnail() { SnCore.Services.TransitPicture p = SessionManager.GetInstance <SnCore.Services.TransitPicture, string>( "AccountWebsite", SessionManager.ObjectService.GetRandomPictureByType); if (p == null || p.Bitmap == null) { p = new SnCore.Services.TransitPicture(); const string s_Unavailable = "Thumbnail\nQueued"; // flip the bitmaps horizontally p.Bitmap = ThumbnailBitmap.GetBitmapDataFromText(s_Unavailable, 10, ThumbnailBitmap.s_FullSize.Height, ThumbnailBitmap.s_FullSize.Width); p.Thumbnail = ThumbnailBitmap.GetBitmapDataFromText(s_Unavailable, 10, ThumbnailBitmap.s_ThumbnailSize.Height, ThumbnailBitmap.s_ThumbnailSize.Width); p.Created = p.Modified = DateTime.UtcNow; } TransitPicture result = new TransitPicture(); result.Id = p.Id; result.Bitmap = p.Thumbnail; result.Created = p.Created; result.Modified = p.Modified; result.Name = p.Name; return(result); }
public void ResizeToThumbnailTest() { string filename = Path.GetTempFileName(); Console.WriteLine("Creating: {0}", filename); try { MemoryStream ms = new MemoryStream(); AnimatedGifEncoder encoder = new AnimatedGifEncoder(); encoder.SetFrameRate(5); encoder.Start(ms); for (char i = 'a'; i <= 'e'; i++) { Console.Write(i.ToString()); encoder.AddFrame(ThumbnailBitmap.GetBitmapFromText( i.ToString(), 48, 300, 200)); } Console.WriteLine(); encoder.Finish(); ms.Flush(); ms.Seek(0, SeekOrigin.Begin); ThumbnailBitmap bitmap = new ThumbnailBitmap(ms); FileStream fs = File.Create(filename); byte[] th = bitmap.Thumbnail; fs.Write(th, 0, th.Length); fs.Close(); } finally { if (File.Exists(filename)) { File.Delete(filename); } } }
public void save_Click(object sender, EventArgs e) { try { Post.Title = CheckInput("Title", inputTitle.Text); List <TransitTopic> topics = new List <TransitTopic>(); foreach (ListItem topic in inputTopic.Items) { if (topic.Selected) { TransitTopic t_topic = new TransitTopic(); t_topic.Name = topic.Text; t_topic.Id = int.Parse(topic.Value); topics.Add(t_topic); } } Post.Topics = topics.ToArray(); Post.Body = inputBody.Content; Post.Publish = inputPublish.Checked; Post.Display = inputDisplay.Checked; Post.Sticky = inputSticky.Checked; Post.Export = inputExport.Checked; Post.Created = SessionManager.ToUTC(inputCreatedDate.SelectedDate.Add( inputCreatedTime.SelectedTime)); Post.Id = PostId = SessionManager.BlogService.CreateOrUpdatePost( SessionManager.Ticket, Post); if (!string.IsNullOrEmpty(inputServerPath.Text)) { string fullpath = Path.Combine( SessionManager.GetSetting("Images", string.Empty), inputServerPath.Text); ArrayList filenames = new ArrayList(); filenames.AddRange(Directory.GetFiles(fullpath, "*.jpg")); filenames.AddRange(Directory.GetFiles(fullpath, "*.gif")); List <TransitPostImage> deleted = SessionManager.GetCachedCollection <TransitPostImage>( "GetPostImages", SessionManager.Ticket, new TransitPostImageQueryOptions(Post.Id)); List <TransitPostImage> updated = new List <TransitPostImage>(); foreach (string filename in filenames) { TransitImage image = new TransitImage(); image.Name = Path.GetFileName(filename); image.Path = inputServerPath.Text; for (int i = 0; i < deleted.Count; i++) { if (deleted[i].Image.Name == image.Name) { image = deleted[i].Image; deleted.RemoveAt(i); break; } } ThumbnailBitmap bitmap = new ThumbnailBitmap(filename); image.Thumbnail = bitmap.Thumbnail; SessionManager.BlogService.CreateOrUpdatePostImage( SessionManager.Ticket, PostId, image); } foreach (TransitPostImage dimage in deleted) { SessionManager.BlogService.DeletePostImage( SessionManager.Ticket, dimage.Id); } SessionManager.Invalidate <TransitPostImage>(); images.Visible = true; GetDataImages(sender, e); } if (!string.IsNullOrEmpty(inputLogin.Text)) { loginAdd_Click(sender, e); } SessionManager.Invalidate <TransitPost>(); ReportInfo("Post Saved"); } catch (Exception ex) { ReportException(ex); } }
public int UpdateImages(ManagedSecurityContext sec) { GetACL().Check(sec, DataOperation.Update); int result = 0; Uri basehref = null; Uri.TryCreate(mInstance.LinkUrl, UriKind.Absolute, out basehref); IList items = Session.CreateCriteria(typeof(AccountFeedItem)) .Add(Expression.Eq("AccountFeed.Id", mInstance.Id)) .List(); foreach (AccountFeedItem item in items) { IList <HtmlImage> images = null; try { images = HtmlImageExtractor.Extract(item.Description, basehref); } catch { continue; } TimeSpan tsDistribution = new TimeSpan(0, 30, 0); foreach (HtmlImage image in images) { AccountFeedItemImg x_img = null; // images may appear only once, repeating images don't get updated // nor images linked from multiple feeds or feed items x_img = (AccountFeedItemImg)Session.CreateCriteria(typeof(AccountFeedItemImg)) .Add(Expression.Eq("Url", image.Src)).UniqueResult(); if (x_img != null) { // image already exists continue; } x_img = new AccountFeedItemImg(); x_img.Created = item.Created.Subtract(tsDistribution); // shuffle images tsDistribution = tsDistribution.Add(new TimeSpan(0, 30, 0)); x_img.Modified = DateTime.UtcNow; x_img.AccountFeedItem = item; x_img.Description = image.Alt; x_img.Interesting = false; x_img.Url = image.Src; // fetch the image to get its size try { WebClient client = new WebClient(); client.Headers["Accept"] = "*/*"; client.Headers["User-Agent"] = ManagedConfiguration.GetValue(Session, "SnCore.Web.UserAgent", "SnCore/1.0"); byte[] data = client.DownloadData(x_img.Url); if (data == null) { throw new Exception("Missing file data."); } ThumbnailBitmap bitmap = new ThumbnailBitmap(data); x_img.Thumbnail = bitmap.Thumbnail; x_img.Visible = mInstance.PublishImgs; // hide images smaller than the thumbnail size if (bitmap.FullSize.Height < ThumbnailBitmap.s_ThumbnailSize.Height || bitmap.FullSize.Width < ThumbnailBitmap.s_ThumbnailSize.Width) { x_img.Visible = false; } } catch (Exception ex) { x_img.LastError = ex.Message; x_img.Visible = false; } Session.Save(x_img); result++; } } return(result); }
public void CreateSecurePostTest() { TransitPost t_post = new TransitPost(); t_post.Body = Guid.NewGuid().ToString(); t_post.Title = Guid.NewGuid().ToString(); t_post.Id = Blog.CreateOrUpdatePost(Ticket, t_post); Assert.Greater(t_post.Id, 0); TransitImage t_image = new TransitImage(); t_image.Name = Guid.NewGuid().ToString(); Bitmap b = new Bitmap(480, 480); Graphics g = Graphics.FromImage(b); g.FillEllipse(Brushes.Red, 0, 0, 480, 480); ThumbnailBitmap tb = new ThumbnailBitmap(b); t_image.Data = tb.Bitmap; t_image.Thumbnail = tb.Thumbnail; t_image.Id = Blog.CreateOrUpdatePostImage(Ticket, t_post.Id, t_image); Assert.Greater(t_image.Id, 0); TransitLogin t_login = new TransitLogin(); t_login.Username = Guid.NewGuid().ToString(); t_login.Password = Guid.NewGuid().ToString(); t_login.Role = TransitLoginRole.Guest; t_login.Id = Blog.CreateOrUpdateLogin(Ticket, t_login); Assert.Greater(t_login.Id, 0); TransitComment t_comment = new TransitComment(); t_comment.IpAddress = "127.0.0.1"; t_comment.Text = Guid.NewGuid().ToString(); t_comment.LoginId = t_login.Id; t_comment.Id = Blog.CreateOrUpdatePostComment(Ticket, t_post.Id, t_comment); Assert.Greater(t_comment.Id, 0); int t_postlogin_id = Blog.CreateOrUpdatePostLogin(Ticket, t_post.Id, t_login); Assert.Greater(t_postlogin_id, 0); string authticket = Blog.Login(t_login.Username, t_login.Password); // check access to posts TransitPost t_post_unauthorized = Blog.GetPostById(null, t_post.Id); Assert.IsTrue(string.IsNullOrEmpty(t_post_unauthorized.Body), "Unathorized post body wasn't stripped."); TransitPost t_post_authorized = Blog.GetPostById(authticket, t_post.Id); Assert.IsFalse(string.IsNullOrEmpty(t_post_authorized.Body), "Authorized post was stripped."); // check access to images TransitImage t_image_unauthorized = Blog.GetImageWithBitmapById(null, t_image.Id); Assert.IsTrue(t_image_unauthorized.Data == null, "Unathorized image returned data."); TransitImage t_image_authorized = Blog.GetImageWithBitmapById(authticket, t_image.Id); Assert.IsTrue(t_image_authorized.Data != null, "Authorized image didn't return data."); // check access to comments TransitComment t_comment_unauthorized = Blog.GetCommentById(null, t_comment.Id); Assert.IsTrue(string.IsNullOrEmpty(t_comment_unauthorized.Text), "Unathorized comment returned data."); TransitComment t_comment_authorized = Blog.GetCommentById(authticket, t_comment.Id); Assert.IsFalse(string.IsNullOrEmpty(t_comment_authorized.Text), "Authorized comment didn't return data."); Blog.DeletePost(Ticket, t_post.Id); }
public static byte[] GetNewBitmap() { return(ThumbnailBitmap.GetBitmapDataFromText(GetNewString(), 12, 240, 100)); }
public override TransitPicture GetPictureWithBitmap(int id) { string url = Request["Src"]; if (string.IsNullOrEmpty(url)) { throw new Exception("Invalid url."); } string key = string.Format("AccountFeedItemPicture:{0}", url.GetHashCode()); TransitPicture result = (TransitPicture)Cache[key]; if (result != null) { return(result); } // fetch the image to get its size WebClient client = new WebClient(); client.Headers["Accept"] = "*/*"; client.Headers["User-Agent"] = SessionManager.GetCachedConfiguration("SnCore.Web.UserAgent", "SnCore/1.0"); result = new TransitPicture(); result.Name = url; try { byte[] data = client.DownloadData(url); if (data == null) { throw new Exception("Missing file data."); } result.Bitmap = new ThumbnailBitmap(new MemoryStream(data), new Size(0, 0), ThumbnailBitmap.s_FullSize, ThumbnailBitmap.s_ThumbnailSize).Bitmap; string created = (string)client.ResponseHeaders["Created"]; if (string.IsNullOrEmpty(created)) { created = (string)client.ResponseHeaders["Date"]; } if (string.IsNullOrEmpty(created) || !DateTime.TryParse(created, out result.Created)) { result.Created = DateTime.Now; } string modified = (string)client.ResponseHeaders["Modified"]; if (string.IsNullOrEmpty(modified) || !DateTime.TryParse(modified, out result.Modified)) { result.Modified = DateTime.Now; } } catch (Exception ex) { string message = string.Format("This image cannot be displayed.\n{0}\n{1}", ex.Message, url); result.Bitmap = ThumbnailBitmap.GetBitmapDataFromText(message, 8, 0, 0); result.Modified = result.Created = DateTime.Now; } Cache.Insert(key, result, null, Cache.NoAbsoluteExpiration, SessionManager.DefaultCacheTimeSpan); return(result); }
protected void Page_Load(object sender, EventArgs e) { try { Nullable <Size> resize = Size; Nullable <DateTime> ims = IfModifiedSince; if (ims.HasValue) { if (ims.Value.ToUniversalTime().AddSeconds(CacheDuration) > DateTime.UtcNow) { Response.StatusCode = 304; return; } } TransitPicture p = null; switch (PageType) { case PicturePageType.Thumbnail: if (RequestId == 0) { p = GetRandomPictureWithThumbnail(); if (p == null) { p = new TransitPicture(); p.Id = 0; p.Created = p.Modified = DateTime.Now; p.Name = Guid.NewGuid().ToString(); if (!resize.HasValue) { resize = new Size(100, 150); } p.Bitmap = ThumbnailBitmap.GetBitmapDataFromText("?", 72, resize.Value.Width, resize.Value.Height); } } else { p = ims.HasValue ? GetPictureWithThumbnail(RequestId, ims.Value) : GetPictureWithThumbnail(RequestId); } break; case PicturePageType.Bitmap: p = ims.HasValue ? GetPictureWithBitmap(RequestId, ims.Value) : GetPictureWithBitmap(RequestId); break; } if (p == null) { if (ims.HasValue) { Response.StatusCode = 304; return; } else { throw new Exception("Invalid picture id."); } } Response.Cache.SetLastModified(p.Modified.ToLocalTime()); Response.Cache.SetCacheability(HttpCacheability.Private); p.Name = (string.IsNullOrEmpty(p.Name)) ? p.Id.ToString() + ".jpg" : p.Id.ToString() + "-" + p.Name; if (resize.HasValue) { ThumbnailBitmap resized = new ThumbnailBitmap(new MemoryStream(p.Bitmap), new Size(0, 0), resize.Value, resize.Value); switch (PageType) { case PicturePageType.Bitmap: p.Bitmap = resized.Bitmap; break; case PicturePageType.Thumbnail: p.Bitmap = resized.Thumbnail; break; } } switch (PageType) { case PicturePageType.Thumbnail: p.Name.Insert(0, "thumbnail-"); break; } Response.ContentType = "image/" + Path.GetExtension(p.Name).TrimStart(".".ToCharArray()); Response.AddHeader("Content-disposition", "attachment; filename=" + p.Name); Response.AddHeader("Created", p.Created.ToString("r")); Response.AddHeader("Modified", p.Modified.ToString("r")); Response.BinaryWrite(p.Bitmap); Response.End(); } catch (Exception ex) { Response.Write(ex.Message); } }
protected void Page_Load(object sender, EventArgs e) { try { Nullable <DateTime> ims = IfModifiedSince; if (ims.HasValue) { if (ims.Value.ToUniversalTime().AddSeconds(CacheDuration) > DateTime.UtcNow) { Response.StatusCode = 304; return; } } Picture p = null; switch (PageType) { case PicturePageType.Thumbnail: if (RequestId == 0) { p = GetRandomPictureWithThumbnail(); if (p == null) { p = new Picture(); p.Id = 0; p.Created = p.Modified = DateTime.Now; p.Name = Guid.NewGuid().ToString(); p.Bitmap = ThumbnailBitmap.GetBitmapDataFromText("?", 72, 100, 150); } } else { p = ims.HasValue ? GetPictureWithThumbnail(RequestId, ims.Value) : GetPictureWithThumbnail(RequestId); } break; case PicturePageType.Bitmap: p = ims.HasValue ? GetPictureWithBitmap(RequestId, ims.Value) : GetPictureWithBitmap(RequestId); break; } if (p == null) { Response.StatusCode = (ims.HasValue ? 304 : 404); return; } if (p.Bitmap == null) { Response.Redirect("./images/site/access.gif", true); return; } Response.Cache.SetLastModified(p.Modified.ToLocalTime()); Response.Cache.SetCacheability(HttpCacheability.Private); p.Name = (string.IsNullOrEmpty(p.Name)) ? p.Id.ToString() + ".jpg" : p.Id.ToString() + "-" + p.Name; switch (PageType) { case PicturePageType.Thumbnail: p.Name.Insert(0, "thumbnail-"); break; case PicturePageType.Bitmap: if (!string.IsNullOrEmpty(Copyright)) { ThumbnailBitmap bitmap = new ThumbnailBitmap(p.Bitmap); bitmap.AddCopyright(Copyright); p.Bitmap = bitmap.Bitmap; } break; } Response.ContentType = "image/" + Path.GetExtension(p.Name).TrimStart(".".ToCharArray()); Response.AddHeader("Content-disposition", "attachment; filename=" + p.Name); Response.AddHeader("Created", p.Created.ToString("r")); Response.AddHeader("Modified", p.Modified.ToString("r")); Response.BinaryWrite(p.Bitmap); Response.End(); } catch (ThreadAbortException) { } catch (Exception ex) { Response.Write(ex.Message); } }