FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Mycket flitig postare
|
Håller på och tillverkar ett skript för att resizea och cropa bilder. Dock har jag mött på ett stort problem...
Bilderna i helt usel kvalitet! Då jag inte har någon anledning att spara bandbredd vill jag ha bra kvalitet på de resizeade bilderna.´ Kod:
public static void makeThumbnail(string orginal, string thumbnail, int maxW, int maxH) *{ * * System.Drawing.Image img; * System.Drawing.Image thumb; * int w; * int h; * img = System.Drawing.Image.FromFile(orginal); * w = img.Width; * h = img.Height; * if (w > maxW) * { * *h = maxW * h / w; * *w = maxW; * } * thumb = img.GetThumbnailImage(w, h, null, System.IntPtr.Zero); * if (thumb.Height > maxH) * { * *System.Drawing.Bitmap btmImage = new Bitmap(thumb); * *Rectangle recCrop = new Rectangle(0, 0, maxW, maxH); * *Bitmap btmCrop = new Bitmap(recCrop.Width, recCrop.Height, btmImage.PixelFormat); * *Graphics gphCrop = Graphics.FromImage(btmCrop); * *Rectangle recDest = new Rectangle(0, 0, maxW, maxH); * *gphCrop.DrawImage(btmImage, recDest, recCrop.X, recCrop.Y, recCrop.Width, recCrop.Height, GraphicsUnit.Pixel); * *btmCrop.Save(thumbnail); * } * else * { * *thumb.Save(thumbnail); * } *} Bifogar bild på hur det ser ut efter resize med skriptet, respektive i Photoshop. |
|||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Flitig postare
|
Vet inte exakt vad funktionen i ASP.NET heter, men i PHP så ställer man in kvaliten på bilden med funktionen imagejpeg():
http://se.php.net/manual/sv/function.imagejpeg.php - Alltså hur mycket den ska komprimera bilden, efter att den skalats om. bool imagejpeg ( resource image [, string filename [, int quality]]) - Det måste/bör finnas en liknande funktion i ASP.NET |
|||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Mycket flitig postare
|
Behöver svar, inte fler frågor :P
Kom med fler förslag... står verkligen helt still. Om nån känner till funktionen för grad av komprimering i asp.net, skriv här! |
|||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Klarade millennium-buggen
|
Det beror lite på vad ditt problem är egentligen. Endera tänker du på kvaliten för hur mycket jpg ska komprimeras eller så tänker du på kvaliten på algorithmen som förminskar bilden.
För att pilla på kvalitén (vb.net exempel...sorry!): Kod:
Const intQuality=25 dim bmpBitmap1 as New Bitmap(server.mappath("images/alima.jpg")) 'Get the list of available encoders Dim codecs() As ImageCodecInfo = ImageCodecInfo.GetImageEncoders() 'find the encoder with the image/jpeg mime-type dim iciInfo as ImageCodecInfo dim item as ImageCodecInfo for each item in codecs *if(item.MimeType="image/jpeg")then iciInfo=item next 'Create a collection of encoder parameters (we only need one in the collection) Dim ep as EncoderParameters = new EncoderParameters() ep.Param(0)= new system.drawing.imaging.EncoderParameter(system.drawing.imaging.Encoder.Quality,intQuality) 'Set the content type response.contenttype="image/jpeg" 'bmpBitmap1.save(server.mappath("." & "/article_images/alima25.jpg"), iciInfo, ep) 'send the bitmap to the outputstream bmpBitmap1.save(response.outputstream, iciInfo, ep) 'tidy up bmpBitmap1.dispose() ..om det gäller algorithmen för att skala om den så vet jag inte hur man gör... |
|||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Har WN som tidsfördriv
|
Utan att testa kodmässigt så läste jag lite i dokumentationen om bitmap, där finns en operation som heter SetResolution som kan sätta upplösning i x och y-led.
Kanske kan vara ngt för dig att läsa in dig på? |
||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Mycket flitig postare
|
Citat:
Tack! |
|||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Medlem
|
För att anknyta till PHP svaret ovan så får man bättre kvalitet om man kopierar och resizear en bild genom att använda php-funktionen "imagecopyresampled" om det nu hjälper nåt, jag vet inte om det finns nåt liknande för att resampla bilder i .NET men det var enm tanke iaf.
|
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Klarade millennium-buggen
|
Personligen så anser jag att "imagemagick" är suveränt.
GD är så begränsat. imagemagick's API fungerar med PHP, ASP, .NET, you name it. http://www.imagemagick.org/ Kan vara mycket att läsa in osv men du tjänar in det på dina underbart fina bilder sen ![]() |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Banned
|
Med tanke på ASP.NET är STORT (Du kan koda ASP.NET i princip vilket språk du vill) så kanske du ska säga att det gäller C#?
Det är väldigt stor skillnad på dom olika språken... Då jag själv enbart lekt med ASP.NET när det gäller bilder så kan jag starkt rekommendera ImageMagicks API som är väldigt enkelt och kraftfullt... |
||
![]() |
![]() |
![]() |
#10 | |||
|
||||
Bara ett inlägg till!
|
Citat:
|
|||
![]() |
![]() |
Svara |
|
|