24. november 2006 - 09:22
Der er
9 kommentarer og 1 løsning
thumpnail af gif
Hejsa E Jeg bruger thumbnailImage til at lave jpg mindre, men kan ikke lige få gifferne med, da den funktion ikke er god til dem. Jeg har derfor delt det op i to. if (getContentType(image) == "image/gif") makeGifThumpnail(file, Convert.ToInt16(imgWidth), Convert.ToInt16(imgHeight)); else makeThumbnail(image, Convert.ToInt16(imgWidth), Convert.ToInt16(imgHeight)); makeThumbnail udskriver billedet til siden med: Response.ContentType = contentType; Response.BinaryWrite(imageContent); Men hvordan gør jeg det med den til giffer. Jeg har forsøgt med med følgende, men kan ikke lige finde ud af at få det sidste med. private void makeGifThumpnail(string file, int imgWidth, int imgHeight) { Bitmap bitmap = new Bitmap(file); // Create rectangle for displaying image. Rectangle destRect = new Rectangle(0, 0, imgWidth, imgHeight); // Draw image to screen. //e.Graphics.DrawImage(bitmap, destRect); } Håber en kan hjælpe med at få det til at virke. På forhånd tak :)
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
24. november 2006 - 10:01
#1
Jeg løste det nogenlunde sådan her (der er muligvis noget dobbeltkonfekt i det, men det virker :D): private void makeGifThumpnail(string file, int imgWidth, int imgHeight) { System.Drawing.Image img = System.Drawing.Image.FromFile(file); Bitmap bitmap = new Bitmap(imgWidth, imgHeight, PixelFormat.Format16bppRgb555); Graphics g = Graphics.FromImage(bitmap); g.CompositingQuality = CompositingQuality.HighQuality; g.SmoothingMode = SmoothingMode.HighQuality; g.InterpolationMode = InterpolationMode.HighQualityBicubic; Rectangle destRect = new Rectangle(0, 0, imgWidth, imgHeight); g.DrawImage(img, rec); } Jeg bruger så bitmap.Save("filnavn"); til at gemme billedet, men den burde vel også kunne sættes ind i en BinaryWrite.
24. november 2006 - 10:02
#2
Glemte lige at sige at den også virker med bmp, png og jpg, så du burde ikke behøve 2 forskellige metoder.
24. november 2006 - 10:22
#3
Super, men jeg får en lille fejl: The name 'CompositingQuality' does not exist in the current context. Jeg kan ikke umiddelbart se hvilket namespace jeg har glemt her...
24. november 2006 - 10:42
#4
System.Drawing.Drawing2D :) Jeg har lige lavet den lidt om så den passer i min term. private void makeGifThumpnail(string file, int imgWidth, int imgHeight) { Image image = Image.FromFile(file); Bitmap bitmap = new Bitmap(imgWidth, imgHeight, PixelFormat.Format16bppRgb555); Graphics g = Graphics.FromImage(bitmap); g.CompositingQuality = CompositingQuality.HighQuality; g.SmoothingMode = SmoothingMode.HighQuality; g.InterpolationMode = InterpolationMode.HighQualityBicubic; Rectangle destRect = new Rectangle(0, 0, imgWidth, imgHeight); g.DrawImage(image, destRect); Response.ContentType = getContentType(image); Response.BinaryWrite(image); image.Dispose(); } Jeg får to fejl i linien: Response.BinaryWrite(image); med streg under response og image. The best overloaded method match for 'System.Web.HttpResponse.BinaryWrite(byte[])' has some invalid arguments cannot convert from 'System.Drawing.Image' to 'byte[]'
24. november 2006 - 11:07
#5
og den fejl fik du ikke før når du brugte Response.BinaryWrite(imageContent);?
24. november 2006 - 11:58
#6
Nu virker det næsten private void makeGifThumpnail(string file, int imgWidth, int imgHeight) { Image image = Image.FromFile(file); ImageFormat format = image.RawFormat; Bitmap bitmap = new Bitmap(imgWidth, imgHeight, PixelFormat.Format16bppRgb555); Graphics g = Graphics.FromImage(bitmap); g.CompositingQuality = CompositingQuality.HighQuality; g.SmoothingMode = SmoothingMode.HighQuality; g.InterpolationMode = InterpolationMode.HighQualityBicubic; Rectangle destRect = new Rectangle(0, 0, imgWidth, imgHeight); g.DrawImage(image, destRect); Response.ContentType = getContentType(image); image.Save(Response.OutputStream, format); image.Dispose(); } Men det viser billedet uden at det er blevet mindre... Hvis jeg skriver: g.Save(Response.OutputStream, format); i stedet for image.Save(Response.OutputStream, format); får jeg fejlen: No overload for method 'Save' takes '2' arguments
24. november 2006 - 12:07
#7
Så virker det :) private void makeGifThumpnail(string file, int imgWidth, int imgHeight) { Image image = Image.FromFile(file); ImageFormat format = image.RawFormat; Bitmap bitmap = new Bitmap(imgWidth, imgHeight, PixelFormat.Format16bppRgb555); Graphics g = Graphics.FromImage(bitmap); g.CompositingQuality = CompositingQuality.HighQuality; g.SmoothingMode = SmoothingMode.HighQuality; g.InterpolationMode = InterpolationMode.HighQualityBicubic; Rectangle destRect = new Rectangle(0, 0, imgWidth, imgHeight); g.DrawImage(image, destRect); Response.ContentType = getContentType(image); bitmap.Save(Response.OutputStream, format); image.Dispose(); bitmap.Dispose(); } Hvad siger du, skal vi dele i porten. Nu kan du også skrive thumbnails ud på web og ikke "kun" gemme dem ?
24. november 2006 - 12:09
#8
Hehe, det er helt fint. Jeg går ikke så meget op i point. Herligt du fik det til at virke!
24. november 2006 - 12:19
#9
Ved du hvad, du skal sgu have det hele. Det er ret fedt at det virker, den har stået stille i ret lang tid og så er det også weekend. Kan du have det godt :)
24. november 2006 - 12:44
#10
Jammen så siger jeg tak. God weekend! :D
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.