Avatar billede peterlang Nybegynder
14. oktober 2004 - 12:42 Der er 5 kommentarer og
1 løsning

Image Resize+Canvas Size "on the fly"

Jeg har nogle billeder der er 50x110 store.

Mit problem er at når de skal vises på nettet skal de være 100x100 store.

så bilderne skal resises (evt. beskæres)
+ hvid baggrund så jeg får en brede på 100 pix

Billederne skal kaldes sådan: <IMG src='foto.aspx?sti=pic/5456.jpg'>

Peter Lang
Avatar billede snepnet Nybegynder
18. oktober 2004 - 22:06 #1
Hej Peter :o)

Kan du bruge denne her ?

// først en testside (kun aspx-kode her)

<%@ Page language="c#" Codebehind="test.aspx.cs" AutoEventWireup="false" Inherits="EXP2.PeterLang.test" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>test</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body>
        <form id="Form1" method="post" runat="server">
            <asp:Image id="Image1" runat="server" ImageUrl="foto.aspx?sti=img1.jpg"></asp:Image>
            <asp:Image id="Image2" runat="server" ImageUrl="foto.aspx?sti=img2.jpg"></asp:Image>&nbsp;
        </form>
    </body>
</HTML>

Og så en en aspx-til den "side" der genererer billedet :
<%@ Page language="c#" Codebehind="foto.aspx.cs" AutoEventWireup="false" Inherits="EXP2.PeterLang.foto" %>

// denne "side" har så en code-behind, der gemmer et billede i outputstream sådan her :
using System;
using System.Drawing;
using System.Drawing.Imaging;
namespace EXP2.PeterLang
{
    public class foto : System.Web.UI.Page
    {
        protected const int WIDTH = 100;
        protected const int HEIGHT = 100;
       
        private void Page_Load(object sender, System.EventArgs e)
        {
            string path = Server.MapPath("~/Images/Dices/" + Request["sti"]);
       
            Bitmap bmp = ImageResizer.RezizeImage(path, WIDTH, HEIGHT);

            Response.ContentType = "image/jpeg";
            bmp.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
            bmp.Dispose();
        }

        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }
       
        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);
        }
    }

    public class ImageResizer
    {
        public static Bitmap RezizeImage(string filePath, int width, int height)
        {
            System.Drawing.Bitmap bmpOut = null;

            try
            {
                Bitmap bmp = new Bitmap(filePath);

                bmpOut = new Bitmap(width, height);
                Graphics g = Graphics.FromImage(bmpOut);
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                g.FillRectangle(Brushes.White, 0, 0, width, height);
                g.DrawImage(bmp, 0, 0, width, height);
                bmp.Dispose();
            }
            catch
            {
                return null;
            }

            return bmpOut;
        }
    }
}

Det virker ganske udemærket her, og kvaliteten er helt fint.
Avatar billede snepnet Nybegynder
18. oktober 2004 - 22:08 #2
Du skal nok lige selv rette lidt - f.eks. denne :
string path = Server.MapPath("~/Images/Dices/" + Request["sti"]);

Til det du nu har brug for... Udfra din tekst ville det nok være :
string path = Server.MapPath("~/" + Request["sti"]);

Hvis du putter det ind et VS-projekt skal du måske også lige checke op på namespaces og den slags.

Håber du kan bruge det til noget :o)

mvh
Avatar billede snepnet Nybegynder
18. oktober 2004 - 22:09 #3
(og du råber bare op, hvis der er noget der driller).
mvh
Avatar billede peterlang Nybegynder
20. oktober 2004 - 16:44 #4
Hej,

Jeg måtte rette lidt, men nu virker det.

Tak for hjælpen.
Kommer du ikke med et svar så jeg kan lukke.
Avatar billede snepnet Nybegynder
20. oktober 2004 - 20:19 #5
et svar her :o)
mvh
Avatar billede snepnet Nybegynder
06. november 2004 - 00:14 #6
hej peter... kan vi lukke her ?
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