Avatar billede n1 Nybegynder
14. maj 2004 - 20:28 Der er 16 kommentarer

upload af billeder (ret simpelt)

Er der ikke nogen der kan lave dette script om således at der kun bliver uploaded et skaleret billed med en maks brede på 70 pixels!! jeg kan ikke lige selv få det til at virke!!
i kan evt bruge nogle af de scripts der ligger her: http://www.zitech.net/index.asp?lmid=sp&coid=sp&tm=sp



<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Drawing" %>
<script runat=server>

private void myUploadCode(Object sender, EventArgs e) {
    string strFileName;
    if(upload_file.PostedFile.ContentLength < (200*1024)) { //Er fil over 100kb?

            if(upload_file.PostedFile.FileName.IndexOf("\\") > 0) {
                strFileName = upload_file.PostedFile.FileName.Substring(upload_file.PostedFile.FileName.LastIndexOf("\\") + 1);
            } else { strFileName = "ukendt.fil"; }

            if(!File.Exists(Server.MapPath("uploaded/stor/" + strFileName))) {

                    int MaxSize = 100;
                    try
                    {
                            System.Drawing.Image image = new System.Drawing.Bitmap(upload_file.PostedFile.InputStream);
                            upload_file.PostedFile.SaveAs(Server.MapPath("uploaded/stor/" + strFileName));
                            System.Drawing.Bitmap bOrg = (System.Drawing.Bitmap)image;
                            System.Drawing.Imaging.ImageFormat format = image.RawFormat;
                 
                            if(image.Width>MaxSize || image.Height>MaxSize) {
                                Bitmap b = Resize(bOrg,MaxSize,MaxSize);
                                b.Save(Server.MapPath("uploaded/" + strFileName ),format);
                            }
                            else
                            { //Gem original da billede allerede er mindre end 100px
                                    upload_file.PostedFile.SaveAs(Server.MapPath("uploaded/" + strFileName));
                            }
                            Response.Write("Billedet er uploaded");
                    }
                    catch
                    {
                        Response.Write("Der skete en fejl ved processering af billedet");       
                    }
          }
          else
          {
                Response.Write("Filnavn eksisterer allerede, prøv at ombøbe billedet!");
          }

        }
        else {
                //Fil var for stor
                Response.Write("Billedet er over 100kb");
        }
}
private static Bitmap Resize(Bitmap b, int MaxHeight, int MaxWidth)
{
        int nWidth = b.Width;
        int nHeight = b.Height;
        if(nHeight>MaxHeight) {
                nWidth = (int)((((double)b.Width)/((double)b.Height))*((double)MaxHeight));               
                nHeight = MaxHeight;
        }
        if(nWidth>MaxWidth) {
                nWidth=MaxWidth;
                nHeight = (int)((((double)b.Height)/((double)b.Width))*((double)MaxWidth));
        }
        Bitmap bTemp = (Bitmap)b.Clone();
        b = new Bitmap(nWidth, nHeight, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
        double nXFactor = (double)bTemp.Width/(double)nWidth;
        double nYFactor = (double)bTemp.Height/(double)nHeight;
        for (int x = 0; x < b.Width; ++x)
                for (int y = 0; y < b.Height; ++y)
                        b.SetPixel(x, y, bTemp.GetPixel((int)(Math.Floor(x * nXFactor)),
                                (int)(Math.Floor(y * nYFactor))));
        return b;
}

</script>

<html>
<body link="#FFFFFF" text="#FFFFFF" bgcolor="#000000" vlink="#FFFFFF" alink="#FFFFFF">

<form enctype="multipart/form-data" runat="server">


<asp:PlaceHolder id="phEdit" runat="server">
    <p><font color="#FFFFFF" face="Arial" size="5">Vælg billed:</font></p>
    <input id="upload_file" type="file" runat="server" /><br><br>
    <asp:button Text="Upload" onClick="myUploadCode" runat="server" /><br>
    <p><font color="#FFFFFF" face="Arial" size="4">Maks fil størrelse: 200kb</font></p>
    </asp:PlaceHolder>
</form>

</body></html>



Takker
Avatar billede wired Nybegynder
14. maj 2004 - 21:30 #1
Du kan ikke undgå at skulle upload hele billedet, men du kan nøjes med at gemme det lille billede.
Avatar billede n1 Nybegynder
14. maj 2004 - 21:35 #2
det er også det jeg gerne vil, den må også gerne gemme billedet i en go kvalitet,
det her kan evt bruges: " bmpGraphics.InterpolationMode = InterpolationMode.High; "
Avatar billede wired Nybegynder
14. maj 2004 - 21:59 #3
Download følgende eksempel:
http://www.zitech.net/ZNSUP/aspx/skalering/
Avatar billede n1 Nybegynder
14. maj 2004 - 22:01 #4
jep, den har jeg, men den gemmer ikke billedet på serveren!
Avatar billede wired Nybegynder
15. maj 2004 - 01:11 #5
I det link jeg sendte til dig skal du bare ændre linien:
  BitmapDest.Save(Response.OutputStream, ImageFormat.Jpeg)
til f.eks.:
  BitmapDest.Save(Server.MapPath("fil.jpg"), ImageFormat.Jpeg)
Avatar billede n1 Nybegynder
15. maj 2004 - 12:46 #6
ok det virker, nu mangler jeg mare at billedet skal være 70 pixels bred og højden skal være relativ, den må også gerne sende en vidre til en anden side når det er uploaded!!
Avatar billede wired Nybegynder
15. maj 2004 - 13:35 #7
Du retter bare linien:
  Dim compressionRectangle As Rectangle = New Rectangle(0, 0, DestWidth, DestHeight)
til
  Dim compressionRectangle As Rectangle = New Rectangle(0, 0, 70, DestHeight)

bemærk dog at billedet så ikke holder forholdende (men det finder du nok ud af),
det løser dog dit spørgsmål.
Avatar billede wired Nybegynder
15. maj 2004 - 13:46 #8
btw: Jeg skulle have svaret på dit forrige spørgsmål så havde jeg fået 200 point... øv. :-)
Avatar billede n1 Nybegynder
15. maj 2004 - 14:05 #9
dem kan du da også godt få, men kan du ikke lave hele scriptet så højden også er relativ til de 70 pixels, og så den viser billedet når det er uploaded!!
Avatar billede wired Nybegynder
15. maj 2004 - 15:51 #10
Jo, men jeg bliver nød til at vide hvad begrænsningen er for bredden. Problemet er at du kan modtage et billede som er 4000(b)x70(h) pixel og vil du så have at man lader billedet forblive - da højden jo er 70 pixel - eller at de 4000 presses ned til 70 og billedet dermed bliver forvrænget, dvs. MEGET tynde mennesker.
Avatar billede n1 Nybegynder
15. maj 2004 - 15:57 #11
de billeder der uploades vil typisk være 200x275, men kan man ikke sætte den til at lave en udregning hvor billedets højde vil være: (70/breden)*højden? jeg prøvede at lave: int DestHeight = (70/BitmapSource.Width)*BitmapSource.Height, men så levede den bare fejl!
Avatar billede wired Nybegynder
15. maj 2004 - 16:21 #12
Stadig samme problem. Forstil dig et billede som er 4000pixels bredt og 70 pixel højt, fx. en masse menneker ved siden af hinanden. Der bliver derfor bare nød til at beslutte dig for en max bredde og derefter tilpasse dine beregninger udfra dette. Skulle nogle så komme med større billede må de selv gøre dem mindre. Hvis du oplyser max. bredde skal jeg gerne komme med et forslag til en udregning.
Avatar billede n1 Nybegynder
15. maj 2004 - 16:52 #13
men det kommer ikke til at blive et problem, fordi alle de billeder der bliver uploaded er højere end de er brede! om ikke andent kan man sætte den til at lave en kontrol så det ikke sker!
Avatar billede wired Nybegynder
29. maj 2004 - 21:48 #14
Jamen så skal du bare sige:
x= 70/højden

højde  = x * højde.
bredde = x * bredde.
Avatar billede n1 Nybegynder
01. juni 2004 - 23:43 #15
jeg har prøvet mig lidt frem, men jeg får denne fejl melding:
Error Uploading file System.ArgumentException: Invalid parameter used. at System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format) at System.Drawing.Bitmap..ctor(Int32 width, Int32 height) at ASP.asdf_aspx.Button1_Click(Object Source, EventArgs e)

men jeg tror det er for di den ikke kan lave højden som et komma tal, så hvis der var en måde den kunne give mig den afrundede værdi af: " BitmapSource.Height * (70/BitmapSource .Width) " tror jeg det ville virke.
Avatar billede wired Nybegynder
02. juni 2004 - 00:10 #16
Du kan altid prøve med CInt(<tal>) eller round(<tal>)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester