Kom ihåg mig?
Home Menu

Menu


Dålig kvalitet i resize med asp.net

 
Ämnesverktyg Visningsalternativ
Oläst 2004-12-20, 19:52 #1
Qo-naqs avatar
Qo-naq Qo-naq är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Apr 2003
Inlägg: 662
Qo-naq Qo-naq är inte uppkopplad
Mycket flitig postare
Qo-naqs avatar
 
Reg.datum: Apr 2003
Inlägg: 662
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);
 *	}
 *}
Hur ska jag göra för att bildkvaliteten ska bli bättre?

Bifogar bild på hur det ser ut efter resize med skriptet, respektive i Photoshop.
Bifogade bilder
Filtyp: jpg post-4-1103568762.jpg (45.5 KB, 0 visningar)
Qo-naq är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-12-20, 20:17 #2
Starwebs avatar
Starweb Starweb är inte uppkopplad
Flitig postare
 
Reg.datum: Jan 2004
Inlägg: 332
Starweb Starweb är inte uppkopplad
Flitig postare
Starwebs avatar
 
Reg.datum: Jan 2004
Inlägg: 332
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
Starweb är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-12-20, 20:44 #3
Qo-naqs avatar
Qo-naq Qo-naq är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Apr 2003
Inlägg: 662
Qo-naq Qo-naq är inte uppkopplad
Mycket flitig postare
Qo-naqs avatar
 
Reg.datum: Apr 2003
Inlägg: 662
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!
Qo-naq är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-12-20, 20:55 #4
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
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...
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-12-21, 10:15 #5
digiArt digiArt är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jan 2004
Inlägg: 1 429
digiArt digiArt är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jan 2004
Inlägg: 1 429
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å?
digiArt är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-12-21, 10:31 #6
Qo-naqs avatar
Qo-naq Qo-naq är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Apr 2003
Inlägg: 662
Qo-naq Qo-naq är inte uppkopplad
Mycket flitig postare
Qo-naqs avatar
 
Reg.datum: Apr 2003
Inlägg: 662
Citat:
Originally posted by digiArt@Dec 21 2004, 11:15
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å?
Ska kolla upp det!.
Tack!
Qo-naq är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-03-11, 23:08 #7
matlin matlin är inte uppkopplad
Medlem
 
Reg.datum: Nov 2004
Inlägg: 53
matlin matlin är inte uppkopplad
Medlem
 
Reg.datum: Nov 2004
Inlägg: 53
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.
matlin är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-03-12, 09:59 #8
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
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
Jonas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-03-12, 14:14 #9
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
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...
hnn är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-03-12, 17:22 #10
kullervos avatar
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Dec 2003
Inlägg: 1 519
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
kullervos avatar
 
Reg.datum: Dec 2003
Inlägg: 1 519
Citat:
Originally posted by hnn@Mar 12 2005, 14:14
Du kan koda ASP.NET i princip vilket språk du vill
Hur går det ihop? Det måste ju vara färdigt stöd får språket för att man ska kunna koda det i ASP.NET, eller misstar jag mig?
kullervo är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 18:28.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017