webForumDet fria alternativet

ändra storlek på bild

.NET

5 svar · 517 visningar · startad av Vinnaren

Medlem sedan sep. 2005833 inlägg
Frågan#1

Håller på med en bilduppladdning, där bilden som laddas upp ska vara/bli 780px bred.

Har följande hittills:

            String extension = Path.GetExtension(fuBanner.FileName).ToLower();

            String filename = Guid.NewGuid() + extension;
            int height, width;

            fuBanner.SaveAs(Server.MapPath("upload/temp") + filename);

            System.Drawing.Image img = Bitmap.FromStream(fuBanner.PostedFile.InputStream);

            height = img.Height;
            width = img.Width;

Hur gör jag om bilden till 780px?

Tacksam för all hjälp :stud

Medlem sedan feb. 200093 inlägg
#2

Att söka på webforum hjälper ibland. http://www.webforum.nu/showthread.php?t=145438 kan nog hjälpa dig.

Det du måste göra är att läsa in filen i minnet och arbeta med den i en memorystream för att sedan skriva den till din uploadpath.

Själv föredrar jag att sktiva filer till databasen för att det ger mig mer kontroll och mindre strul med behörigheter i filsystemet.

Medlem sedan maj 20012 812 inlägg
#3

coercri skrev:

Själv föredrar jag att sktiva filer till databasen för att det ger mig mer kontroll och mindre strul med behörigheter i filsystemet.

Om man väljer detta alternativ (som har sina fördelar/nackdelar) så måste man se till så att bilderna läggs i en lokal cache när de är omvandlade från sin dataström till ett bildobjekt. Eftersom prestandan blir rejält lidande när man använder GDI+ för att skapa bilder från en dataström.

- M

Medlem sedan sep. 2005833 inlägg
#4

ok, men löste det med:

img = img.GetThumbnailImage(780, height, null, System.IntPtr.Zero);

Kanske inte det bästa sättet men det var smidigt :i

Eller kanske finns nott bättre sätt :q

Medlem sedan sep. 2005833 inlägg
#5

får ett litet felmeddelande när jag kör uppladdningen:
An object reference is required for the nonstatic field, method, or property 'System.Web.UI.Page.Server.get'

på:

fu.SaveAs(Server.MapPath("~/upload/temp/") + filename);

Hur löser man detta?

Medlem sedan dec. 20014 239 inlägg
#6

Saxat från internet:

public static Image FixedSize(Image imgPhoto, int Width, int Height)
        {
            int sourceWidth = imgPhoto.Width;
            int sourceHeight = imgPhoto.Height;
            int sourceX = 0;
            int sourceY = 0;
            int destX = 0;
            int destY = 0;

            float nPercent = 0;
            float nPercentW = 0;
            float nPercentH = 0;

            nPercentW = ((float)Width / (float)sourceWidth);
            nPercentH = ((float)Height / (float)sourceHeight);

            //if we have to pad the height pad both the top and the bottom
            //with the difference between the scaled height and the desired height
            if (nPercentH < nPercentW)
            {
                nPercent = nPercentH;
                destX = (int)((Width - (sourceWidth * nPercent)) / 2);
            }
            else
            {
                nPercent = nPercentW;
                destY = (int)((Height - (sourceHeight * nPercent)) / 2);
            }

            int destWidth = (int)(sourceWidth * nPercent);
            int destHeight = (int)(sourceHeight * nPercent);

            Bitmap bmPhoto = new Bitmap(Width, Height, PixelFormat.Format24bppRgb);
            bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution);

            Graphics grPhoto = Graphics.FromImage(bmPhoto);
            grPhoto.Clear(Color.White);
            grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;

            grPhoto.DrawImage(imgPhoto,
                new Rectangle(destX, destY, destWidth, destHeight),
                new Rectangle(sourceX, sourceY, sourceWidth, sourceHeight),
                GraphicsUnit.Pixel);

            grPhoto.Dispose();
            return bmPhoto;
        }
290 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
160 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)