Avatar billede gadebarnet Nybegynder
19. marts 2005 - 18:38 Der er 14 kommentarer og
1 løsning

ved fejl, så "et eller andet"

Jeg har dette script... Hvis du at det billede der bliver sendt til den IKKE findes kommer der den normale billede fejl (hvis dims med rødt kryds i...) Er det ikke muligt at smide et standard billede ind når fejl...

---
<%@ Page Language="C#" %>
<%@ import Namespace="System" %>
<%@ import Namespace="System.Collections" %>
<%@ import Namespace="System.Drawing.Imaging" %>
<script runat="server">

    public enum SizeConversionType
    {
        Type1,
        Type2,
    Type3,
    Type4,
    Type5
    }
   
    private const string IMAGE_FOLDER = "";
   
    protected SizeConversionType ConversionType
    {
        get
        {
            object o = Request.QueryString["SizeConversionType"];
            try
            {
                return (SizeConversionType)Enum.Parse(typeof(SizeConversionType), o.ToString(), true);
            }
            catch
            {
                return SizeConversionType.Type1;
            }
        }
    }
   
    protected string ImageFileName
    {
        get
        {
            return (object)Request.QueryString["ImageFileName"] != null ? Request.QueryString["ImageFileName"] : null;
        }
    }
   
    protected void Page_Load(object sender, System.EventArgs e)
    {
        string path = Server.MapPath(IMAGE_FOLDER + ImageFileName);
        System.Drawing.Image orgImage = System.Drawing.Image.FromFile(path);
   
        int orgWidth = orgImage.Width;
        int orgHeight = orgImage.Height;
   
        orgImage.Dispose();
   
        int newWidht = 0;
        int newHeigth = 0;
   
        switch(ConversionType)
        {
            case SizeConversionType.Type1 :
                if(orgWidth == 480 && orgHeight == 640)
                {
                    newWidht = 309;
                    newHeigth = 412;
                }
                else if(orgWidth == 640 && orgHeight == 480)
                {
                    newWidht = 550;
                    newHeigth = 412;
                }
                else
                {
                    newWidht = 550;
                    newHeigth = 412;
                }
                break;
        case SizeConversionType.Type2 :
                if(orgWidth == 480 && orgHeight == 640)
                {
                newWidht = 62;
                    newHeigth = 82;
                }
                else if(orgWidth == 640 && orgHeight == 480)
                {
                    newWidht = 80;
                    newHeigth = 60;
                }
                else
                {
                    newWidht = 80;
                    newHeigth =60;
                }
                break;
    case SizeConversionType.Type3 :
                if(orgWidth == 480 && orgHeight == 640)
                {
                newWidht = 48;
                    newHeigth = 60;
                }
                else if(orgWidth == 640 && orgHeight == 480)
                {
                    newWidht = 60;
                    newHeigth = 46;
                }
                else
                {
                    newWidht = 60;
                    newHeigth =46;
                }
                break;
    case SizeConversionType.Type4 :
                if(orgWidth == 480 && orgHeight == 640)
                {
                newWidht = 88;
                    newHeigth = 88;
                }
                else if(orgWidth == 640 && orgHeight == 480)
                {
                    newWidht = 88;
                    newHeigth = 88;
                }
                else
                {
                    newWidht = 88;
                    newHeigth =88;
                }
                break;
    case SizeConversionType.Type5 :
                if(orgWidth == 480 && orgHeight == 640)
                {
                newWidht = 125;
                    newHeigth = 125;
                }
                else if(orgWidth == 640 && orgHeight == 480)
                {
                    newWidht = 125;
                    newHeigth = 125;
                }
                else
                {
                    newWidht = 125;
                    newHeigth =125;
                }
                break;
             
        }
   
        System.Drawing.Image image = ImageResizer.RezizeImage(path, newWidht, newHeigth);
        Response.ContentType = "image/jpeg";
        image.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
        image.Dispose();
    }
   
    public class ImageResizer
    {
        public static System.Drawing.Bitmap RezizeImage(string filePath, int width, int height)
        {
            System.Drawing.Bitmap bmpOut = null;
   
            try
            {
                System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(filePath);
   
                bmpOut = new System.Drawing.Bitmap(width, height);
                System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmpOut);
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                g.FillRectangle(System.Drawing.Brushes.White, 0, 0, width, height);
                g.DrawImage(bmp, 0, 0, width, height);
                bmp.Dispose();
            }
            catch
            {
                return null;
            }
   
            return bmpOut;
        }
    }

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <!-- Insert content here -->
    </form>
</body>
</html>
Avatar billede gadebarnet Nybegynder
19. marts 2005 - 18:39 #1
Ahhh, jeg skal vel bare smide noget ind efter catch ???? men hvad ?
Avatar billede gurvic Nybegynder
19. marts 2005 - 20:13 #2
catch(Exception exc){
Response.Write("fejlen er " + exc.ToString();
}
Avatar billede gurvic Nybegynder
19. marts 2005 - 20:15 #3
argh undskyld læste lige dit spørgsmål igen ;)
Avatar billede snepnet Nybegynder
19. marts 2005 - 23:41 #4
howdy :o)
hvis du kan resikere at ikke at ramme nogle af dine cases i switchen, skal du have den
default :
  // et eller andet
  break;

og hvis du kan resikere at billedet ikke finde - kan du lægger noget som minder om det der står i din try ind i en catch, men så bare lave et default billede der bliver suget istedet :
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(nonImageFilePath);

mvh
Avatar billede gadebarnet Nybegynder
20. marts 2005 - 09:16 #5
snepnet

Det var lige det jeg skulle bruge... Jeg skrev det jo næsten selv... GODMORGEN...

Men smid lige et svar, for det var dig der "kickstartede" min hukommelse...
Avatar billede gadebarnet Nybegynder
20. marts 2005 - 10:33 #6
Hey... DEt kan jeg sku ikke lige få til at virke...

Kan du ikke skrive hvad der skal stå i catch
Avatar billede snepnet Nybegynder
20. marts 2005 - 11:00 #7
du kan jo fikse det hurtigt ved bare skrive det samme... bare bruge en anden sti til billedet :

try
{
  System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(filePath);
   
  bmpOut = new System.Drawing.Bitmap(width, height);
  System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmpOut);
  g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
  g.FillRectangle(System.Drawing.Brushes.White, 0, 0, width, height);
  g.DrawImage(bmp, 0, 0, width, height);
  bmp.Dispose();
}
catch
{
  string path = <sti til dit "tomme" billede">;
  System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(path);
   
  bmpOut = new System.Drawing.Bitmap(width, height);
  System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmpOut);
  g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
  g.FillRectangle(System.Drawing.Brushes.White, 0, 0, width, height);
  g.DrawImage(bmp, 0, 0, width, height);
  bmp.Dispose();
}

mvh
Avatar billede gadebarnet Nybegynder
20. marts 2005 - 11:10 #8
Ja, det prøvede jeg også men det virker ikke...
Avatar billede snepnet Nybegynder
20. marts 2005 - 11:15 #9
er det en hemmelighed hvad der går galt ;o)
Avatar billede gadebarnet Nybegynder
20. marts 2005 - 11:16 #10
Nej, sorry...


Den smider ikke det billede ind som jeg skriver i path, den prøver med det billede der fejler...

forstår du ?
Avatar billede snepnet Nybegynder
20. marts 2005 - 11:20 #11
det er jeg ikke helt sikker på at jeg gør.... kommer du slet ikke ned i din catch ?

du skal huske at håndtere det, hvis det er oppe i din switch du kan risikere at falde igennem.... hvis det er tilfældet skal du sørge for at lave en default :

default :
  newWidth = 100;
  newHeight = 100;
  break;

men... skriv lige tilbage om du slet ikke rammer din catch.

mvh
Avatar billede gadebarnet Nybegynder
20. marts 2005 - 11:33 #12
??? Alle de billeder der findes bliver vist, men når min while -> wend kommer til det billede så prøver den at vise det aligevel og ikke det billede som skulle vises ved catch...

og jeg tror ikke at jeg kommer ned i den catch...
Avatar billede snepnet Nybegynder
20. marts 2005 - 13:38 #13
hej igen :o)

jeg ved ikke hvad du mener med at når din while -> wend kommer til det billede... jeg går du fra at det er en lykke du har på en anden form.

men.... hvis du kommer ned i din medtode med en ugyldig filepath - altså en path til en fil der ikke eksisterer burde der hæves en exception, hvilket så skulle gøre at du får kørt din catch, hvor du så kan håndtere situationen.

kan du ikke bare debugge - så du kan finde ud af hvad der sker ? - eller lave en Response.Write("..."); - eller måske bruge Trace til det ?

mvh
Avatar billede gadebarnet Nybegynder
20. marts 2005 - 14:14 #14
jeg prøver...

Jeg vender tilbage hvis det stadigvæk driller...

Men du får lige point nu. ok.
Avatar billede snepnet Nybegynder
20. marts 2005 - 14:21 #15
bare iorden - du vender bare tilbage når det er.
mvh
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