Arbeiten mit Bildern auf einer ASP.net Web Pages-(Razor-) WebsiteWorking with Images in an ASP.NET Web Pages (Razor) Site

von Tom fitzmackenby Tom FitzMacken

In diesem Artikel wird das Hinzufügen, anzeigen und Bearbeiten von Bildern (Ändern der Größe, kippen und Hinzufügen von Wasserzeichen) auf einer ASP.net Web Pages-Website (Razor-Website) veranschaulicht.This article shows you how to add, display, and manipulate images (resize, flip, and add watermarks) in an ASP.NET Web Pages (Razor) website.

Sie lernen Folgendes:What you'll learn:

  • Gewusst wie: Dynamisches Hinzufügen eines Bilds zu einer Seite.How to add an image to a page dynamically.
  • So ermöglichen Sie Benutzern das Hochladen eines Bilds.How to let users upload an image.
  • Ändern der Größe eines Bilds.How to resize an image.
  • Vorgehensweise beim Kippen oder Drehen eines Bilds.How to flip or rotate an image.
  • Vorgehensweise beim Hinzufügen eines Wasserzeichens zu einem BildHow to add a watermark to an image.
  • Verwendung eines Bilds als Wasserzeichen.How to use an image as a watermark.

Dies sind die ASP.net-Programmierfunktionen, die im Artikel eingeführt wurden:These are the ASP.NET programming features introduced in the article:

  • Das WebImage-Hilfsprogramm.The WebImage helper.
  • Das Path-Objekt, das Methoden bereitstellt, mit denen Sie Pfad-und Dateinamen bearbeiten können.The Path object, which provides methods that let you manipulate path and file names.

Im Tutorial verwendete Software VersionenSoftware versions used in the tutorial

  • ASP.net Web Pages (Razor) 2ASP.NET Web Pages (Razor) 2
  • WebMatrix 2WebMatrix 2

Dieses Tutorial funktioniert auch mit webmatrix 3.This tutorial also works with WebMatrix 3.

Dynamisches Hinzufügen eines Bilds zu einer WebseiteAdding an Image to a Web Page Dynamically

Während Sie die Website entwickeln, können Sie Ihrer Website und einzelnen Seiten Bilder hinzufügen.You can add images to your website and to individual pages while you're developing the website. Sie können Benutzern auch das Hochladen von Bildern gestatten, was für Aufgaben wie das Hinzufügen eines Profil Fotos nützlich sein kann.You can also let users upload images, which might be useful for tasks like letting them add a profile photo.

Wenn ein Image bereits auf Ihrer Website verfügbar ist und Sie es nur auf einer Seite anzeigen möchten, verwenden Sie ein HTML-<img> Element wie folgt:If an image is already available on your site and you just want to display it on a page, you use an HTML <img> element like this:

<img src="images/Photo1.jpg" alt="Sample Photo" />

Manchmal müssen Sie jedoch in der Lage sein, Bilder dynamisch — anzuzeigen, d. h., Sie wissen nicht, welches Bild angezeigt werden soll, bis die Seite ausgeführt wird.Sometimes, though, you need to be able to display images dynamically — that is, you don't know what image to display until the page is running.

Das Verfahren in diesem Abschnitt zeigt, wie ein Bild dynamisch angezeigt wird, wenn Benutzer den Bilddateinamen aus einer Liste von Image Namen angeben.The procedure in this section shows how to display an image on the fly where users specify the image file name from a list of image names. Sie wählen den Namen des Bilds aus einer Dropdown Liste aus. Wenn Sie die Seite übermitteln, wird das ausgewählte Bild angezeigt.They select the name of the image from a drop-down list, and when they submit the page, the image they selected is displayed.

Klang[image]

  1. Erstellen Sie in webmatrix eine neue Website.In WebMatrix, create a new website.

  2. Fügen Sie eine neue Seite mit dem Namen " dynamicimage. cshtml" hinzu.Add a new page named DynamicImage.cshtml.

  3. Fügen Sie im Stamm Ordner der Website einen neuen Ordner hinzu, und nennen Sie ihn Images.In the root folder of the website, add a new folder and name it images.

  4. Fügen Sie dem soeben erstellten Ordner Images vier Bilder hinzu.Add four images to the images folder you just created. (Alle Abbilder, die Sie praktisch haben, werden jedoch auf eine Seite passen.) Benennen Sie die Images Photo1. jpg, Photo2. jpg, Photo3. jpgund Photo4. jpgum.(Any images you have handy will do, but they should fit onto a page.) Rename the images Photo1.jpg, Photo2.jpg, Photo3.jpg, and Photo4.jpg. (In diesem Verfahren verwenden Sie Photo4. jpg nicht, aber Sie verwenden es später in diesem Artikel.)(You won't use Photo4.jpg in this procedure, but you'll use it later in the article.)

  5. Vergewissern Sie sich, dass die vier Bilder nicht als schreibgeschützt gekennzeichnet sind.Verify that the four images are not marked as read-only.

  6. Ersetzen Sie den vorhandenen Inhalt auf der Seite durch Folgendes:Replace the existing content in the page with the following:

    @{  var imagePath= "";
        if( Request["photoChoice"] != null){
            imagePath = @"images\" + Request["photoChoice"];
       }
    }
    <!DOCTYPE html>
    <html>
    <head>
      <title>Display Image on the Fly</title>
    </head>
    <body>
    <h1>Displaying an Image On the Fly</h1>
    <form method="post" action="">
        <div>
            I want to see:
            <select name="photoChoice">
                <option value="Photo1.jpg">Photo 1</option>
                <option value="Photo2.jpg">Photo 2</option>
                <option value="Photo3.jpg">Photo 3</option>
            </select>
            &nbsp;
            <input type="submit" value="Submit" />
        </div>
        <div style="padding:10px;">
            @if(imagePath != ""){
                <img src="@imagePath" alt="Sample Image" width="300px" />
            }
        </div>
    </form>
    </body>
    </html>
    

    Der Text der Seite enthält eine Dropdown Liste (ein <select> Element) mit dem Namen photoChoice.The body of the page has a drop-down list (a <select> element) that's named photoChoice. Die Liste enthält drei Optionen, und das value-Attribut jeder Listen Option hat den Namen eines der Images, die Sie im Ordner Images abgelegt haben.The list has three options, and the value attribute of each list option has the name of one of the images that you put in the images folder. Im Wesentlichen kann der Benutzer in der Liste einen anzeigen Amen wie "Foto 1"auswählen und übergibt dann den Namen der JPG -Datei, wenn die Seite übermittelt wird.Essentially, the list lets the user select a friendly name like "Photo 1", and it then passes the .jpg file name when the page is submitted.

    Im Code können Sie die Auswahl des Benutzers (d. h. den Bilddatei Namen) aus der Liste durchlesen Request["photoChoice"]erhalten.In the code, you can get the user's selection (in other words, the image file name) from the list by reading Request["photoChoice"]. Sie sehen zunächst, ob eine Auswahl vorliegt.You first see if there's a selection at all. Wenn dies der Fall ist, erstellen Sie einen Pfad für das Image, das aus dem Namen des Ordners für die Bilder und dem Bilddateinamen des Benutzers besteht.If there is, you construct a path for the image that consists of the name of the folder for the images and the user's image file name. (Wenn Sie versucht haben, einen Pfad zu erstellen, aber keine Request["photoChoice"], erhalten Sie einen Fehler.) Dies führt zu einem relativen Pfad wie diesem:(If you tried to construct a path but there was nothing in Request["photoChoice"], you'd get an error.) This results in a relative path like this:

    Images/Photo1. jpgimages/Photo1.jpg

    Der Pfad wird in der Variablen mit dem Namen imagePath gespeichert, die Sie später auf der Seite benötigen.The path is stored in variable named imagePath that you'll need later in the page.

    Im Text gibt es auch ein <img>-Element, das zum Anzeigen des Bilds verwendet wird, das der Benutzer ausgewählt hat.In the body, there's also an <img> element that's used to display the image that the user picked. Das src-Attribut ist nicht auf einen Dateinamen oder eine URL festgelegt, wie Sie es tun würden, um ein statisches Element anzuzeigen.The src attribute isn't set to a file name or URL, like you'd do to display a static element. Stattdessen wird Sie auf "@imagePath" festgelegt, was bedeutet, dass Sie Ihren Wert aus dem Pfad erhält, den Sie im Code festlegen.Instead, it's set to @imagePath, meaning that it gets its value from the path you set in code.

    Wenn die Seite zum ersten Mal ausgeführt wird, gibt es jedoch kein Bild, das angezeigt werden kann, da der Benutzer nichts ausgewählt hat.The first time that the page runs, though, there's no image to display, because the user hasn't selected anything. Dies bedeutet normalerweise, dass das src-Attribut leer ist und das Bild als roter "x" angezeigt wird (oder was der Browser rendert, wenn ein Bild nicht gefunden werden kann).This would normally mean that the src attribute would be empty and the image would show up as a red "x" (or whatever the browser renders when it can't find an image). Um dies zu verhindern, platzieren Sie das <img>-Element in einem if Block, der testet, ob die imagePath Variable etwas enthält.To prevent this, you put the <img> element in an if block that tests to see whether the imagePath variable has anything in it. Wenn der Benutzer eine Auswahl getroffen hat, imagePath den Pfad enthält.If the user made a selection, imagePath contains the path. Wenn der Benutzer kein Bild ausgewählt hat oder wenn die Seite das erste Mal angezeigt wird, wird das <img> Element nicht gerade gerendert.If the user didn't pick an image or if this is the first time the page is displayed, the <img> element isn't even rendered.

  7. Speichern Sie die Datei, und führen Sie die Seite in einem Browser aus.Save the file and run the page in a browser. (Stellen Sie sicher, dass die Seite im Arbeitsbereich " Dateien " ausgewählt ist, bevor Sie Sie ausführen.)(Make sure the page is selected in the Files workspace before you run it.)

  8. Wählen Sie ein Bild aus der Dropdown Liste aus, und klicken Sie dann auf Beispiel Bild.Select an image from the drop-down list and then click Sample Image. Stellen Sie sicher, dass Sie unterschiedliche Images für unterschiedliche Optionen sehen.Make sure that you see different images for different choices.

Hochladen eines BildsUploading an Image

Im vorherigen Beispiel wurde gezeigt, wie Sie ein Bild dynamisch anzeigen, aber es funktioniert nur mit Bildern, die bereits auf Ihrer Website vorhanden waren.The previous example showed you how to display an image dynamically, but it worked only with images that were already on your website. In diesem Verfahren wird gezeigt, wie Sie Benutzern das Hochladen eines Bilds ermöglichen, das dann auf der Seite angezeigt wird.This procedure shows how to let users upload an image, which is then displayed on the page. In ASP.net können Sie Bilder im laufenden Betrieb mit dem WebImage-Hilfsprogramm manipulieren, das über Methoden zum Erstellen, bearbeiten und Speichern von Bildern verfügt.In ASP.NET, you can manipulate images on the fly using the WebImage helper, which has methods that let you create, manipulate, and save images. Das WebImage-Hilfsprogramm unterstützt alle gängigen webimage Dateitypen, einschließlich JPG, PNGund BMP.The WebImage helper supports all the common web image file types, including .jpg, .png, and .bmp. In diesem Artikel verwenden Sie JPG -Images, aber Sie können jeden der Bildtypen verwenden.Throughout this article, you'll use .jpg images, but you can use any of the image types.

Klang[image]

  1. Fügen Sie eine neue Seite hinzu, und nennen Sie Sie UploadImage. cshtml.Add a new page and name it UploadImage.cshtml.

  2. Ersetzen Sie den vorhandenen Inhalt auf der Seite durch Folgendes:Replace the existing content in the page with the following:

    @{  WebImage photo = null;
        var newFileName = "";
        var imagePath = "";
    
        if(IsPost){
            photo = WebImage.GetImageFromRequest();
            if(photo != null){
                newFileName = Guid.NewGuid().ToString() + "_" +
                    Path.GetFileName(photo.FileName);
                imagePath = @"images\" + newFileName;
    
                photo.Save(@"~\" + imagePath);
            }
        }
    }
    <!DOCTYPE html>
    <html>
    <head>
      <title>Image Upload</title>
    </head>
    <body>
      <form action="" method="post" enctype="multipart/form-data">
        <fieldset>
          <legend> Upload Image </legend>
          <label for="Image">Image</label>
          <input type="file" name="Image" />
          <br/>
          <input type="submit" value="Upload" />
        </fieldset>
      </form>
      <h1>Uploaded Image</h1>
        @if(imagePath != ""){
        <div class="result">
            <img src="@imagePath" alt="image" />
    
        </div>
        }
    </body>
    </html>
    

    Der Textkörper des Texts verfügt über ein <input type="file">-Element, mit dem Benutzer eine hoch zuladende Datei auswählen können.The body of the text has an <input type="file"> element, which lets users select a file to upload. Wenn Sie auf sendenklicken, wird die Datei, die Sie ausgewählt hat, zusammen mit dem Formular übermittelt.When they click Submit, the file they picked is submitted along with the form.

    Um das hochgeladene Image zu erhalten, verwenden Sie das WebImage-Hilfsprogramm, das über alle nützlichen Methoden zum Arbeiten mit Bildern verfügt.To get the uploaded image, you use the WebImage helper, which has all sorts of useful methods for working with images. Insbesondere verwenden Sie WebImage.GetImageFromRequest, um das hochgeladene Bild (sofern vorhanden) zu erhalten, und speichern es in einer Variablen mit dem Namen photo.Specifically, you use WebImage.GetImageFromRequest to get the uploaded image (if any) and store it in a variable named photo.

    Ein Großteil der Arbeit in diesem Beispiel umfasst das Einrichten und Festlegen von Datei-und Pfadnamen.A lot of the work in this example involves getting and setting file and path names. Das Problem besteht darin, dass Sie den Namen (und nur den Namen) des Bilds, das der Benutzer hochgeladen hat, und dann einen neuen Pfad zum Speichern des Images erstellen möchten.The issue is that you want to get the name (and just the name) of the image that the user uploaded, and then create a new path for where you're going to store the image. Da Benutzer potenziell mehrere Bilder hochladen können, die denselben Namen aufweisen, verwenden Sie einen gewissen zusätzlichen Code, um eindeutige Namen zu erstellen und sicherzustellen, dass Benutzer vorhandene Bilder nicht überschreiben.Because users could potentially upload multiple images that have the same name, you use a bit of extra code to create unique names and make sure that users don't overwrite existing pictures.

    Wenn ein Bild tatsächlich hochgeladen wurde (der Test if (photo != null)), erhalten Sie den Image Namen aus der FileName-Eigenschaft des Images.If an image actually has been uploaded (the test if (photo != null)), you get the image name from the image's FileName property. Wenn der Benutzer das Image hochlädt, enthält FileName den ursprünglichen Namen des Benutzers, der den Pfad des Benutzer Computers enthält.When the user uploads the image, FileName contains the user's original name, which includes the path from the user's computer. Dies könnte wie folgt aussehen:It might look like this:

    C:\users\joe\pictures\samplephoto1.jpgC:\Users\Joe\Pictures\SamplePhoto1.jpg

    Sie möchten nicht alle Pfadinformationen, obwohl — Sie nur den eigentlichen Dateinamen (SamplePhoto1. jpg) benötigen.You don't want all that path information, though — you just want the actual file name (SamplePhoto1.jpg). Sie können nur die Datei aus einem Pfad entfernen, indem Sie die Path.GetFileName-Methode wie folgt verwenden:You can strip out just the file from a path by using the Path.GetFileName method, like this:

    Path.GetFileName(photo.FileName)
    

    Anschließend erstellen Sie einen neuen eindeutigen Dateinamen, indem Sie dem ursprünglichen Namen eine GUID hinzufügen.You then create a new unique file name by adding a GUID to the original name. (Weitere Informationen zu GUIDs finden Sie unter Informationen zu GUIDs weiter unten in diesem Artikel.) Anschließend erstellen Sie einen kompletten Pfad, den Sie zum Speichern des Bilds verwenden können.(For more about GUIDs, see About GUIDs later in this article.) Then you construct a complete path that you can use to save the image. Der Speicherpfad besteht aus dem neuen Dateinamen, dem Ordner (Images) und dem aktuellen Speicherort der Website.The save path is made up of the new file name, the folder (images), and the current website location.

    Note

    Damit Ihr Code Dateien im Ordner Images speichern kann, benötigt die Anwendung Lese-/Schreibberechtigungen für diesen Ordner.In order for your code to save files in the images folder, the application needs read-write permissions for that folder. Auf dem Entwicklungs Computer ist dies in der Regel kein Problem.On your development computer this is not typically an issue. Wenn Sie Ihre Website jedoch auf dem Webserver eines hostinganbieters veröffentlichen, müssen Sie diese Berechtigungen möglicherweise explizit festlegen.However, when you publish your site to a hosting provider's web server, you might need to explicitly set those permissions. Wenn Sie diesen Code auf dem Server eines hostinganbieters ausführen und Fehler erhalten, wenden Sie sich an den Hostinganbieter, um herauszufinden, wie diese Berechtigungen festgelegt werden.If you run this code on a hosting provider's server and get errors, check with the hosting provider to find out how to set those permissions.

    Zum Schluss übergeben Sie den Speicherpfad an die Save-Methode des WebImage-Hilfsprogramms.Finally, you pass the save path to the Save method of the WebImage helper. Dadurch wird das hochgeladene Bild unter seinem neuen Namen gespeichert.This stores the uploaded image under its new name. Die Save-Methode sieht wie folgt aus: photo.Save(@"~\" + imagePath).The save method looks like this: photo.Save(@"~\" + imagePath). Der gesamte Pfad wird an @"~\"angehängt. Dies ist der aktuelle Speicherort der Website.The complete path is appended to @"~\", which is the current website location. (Informationen zum ~-Operator finden Sie unter Einführung in die ASP.net-Webprogrammierung mit der Razor-Syntax.)(For information about the ~ operator, see Introduction to ASP.NET Web Programming Using the Razor Syntax.)

    Wie im vorherigen Beispiel enthält der Text der Seite ein <img>-Element zum Anzeigen des Bilds.As in the previous example, the body of the page contains an <img> element to display the image. Wenn imagePath festgelegt wurde, wird das <img> Element gerendert, und sein src-Attribut wird auf den imagePath Wert festgelegt.If imagePath has been set, the <img> element is rendered and its src attribute is set to the imagePath value.

  3. Führen Sie die Seite in einem Browser aus.Run the page in a browser.

  4. Laden Sie ein Bild hoch, und stellen Sie sicher, dass es auf der Seite angezeigt wird.Upload an image and make sure it's displayed in the page.

  5. Öffnen Sie an Ihrer Website den Ordner Images .In your site, open the images folder. Sie sehen, dass eine neue Datei hinzugefügt wurde, deren Dateiname in etwa wie folgt aussieht:You see that a new file has been added whose file name looks something like this::

    45ea4527-7ddd-4965-b9ca-c6444982b342_MyPhoto. png45ea4527-7ddd-4965-b9ca-c6444982b342_MyPhoto.png

    Dies ist das Bild, das Sie mit einer GUID hochgeladen haben, der der Name vorangestellt ist.This is the image that you uploaded with a GUID prefixed to the name. (Ihre eigene Datei hat eine andere GUID und wird wahrscheinlich anders benannt als MyPhoto. png.)(Your own file will have a different GUID and probably is named something different than MyPhoto.png.)

Tip

Informationen zu GUIDsAbout GUIDs

Eine GUID (Global-Unique ID) ist ein Bezeichner, der normalerweise in einem Format wie dem folgenden gerendert wird: 936DA01F-9ABD-4d9d-80C7-02AF85C822A8.A GUID (globally-unique ID) is an identifier that's usually rendered in a format like this: 936DA01F-9ABD-4d9d-80C7-02AF85C822A8. Die Zahlen und Buchstaben (von A-F) unterscheiden sich für jede GUID, aber Sie folgen dem Muster der Verwendung von Gruppen mit 8-4-4-4-12 Zeichen.The numbers and letters (from A-F) differ for each GUID, but they all follow the pattern of using groups of 8-4-4-4-12 characters. (Technisch gesehen handelt es sich bei einer GUID um eine 16-Byte-/128-Bit-Zahl.) Wenn Sie eine GUID benötigen, können Sie spezialisierten Code aufzurufen, der eine GUID für Sie generiert.(Technically, a GUID is a 16-byte/128-bit number.) When you need a GUID, you can call specialized code that generates a GUID for you. Die Idee hinter GUIDs besteht darin, dass die sich ergebende Zahl zwischen der großen Größe der Zahl (3,4 x 1038) und dem Algorithmus für die Erstellung der Zahl praktisch garantiert eine der Typen ist.The idea behind GUIDs is that between the enormous size of the number (3.4 x 1038) and the algorithm for generating it, the resulting number is virtually guaranteed to be one of a kind. GUIDs sind daher eine gute Möglichkeit, Namen für Dinge zu generieren, wenn Sie garantieren müssen, dass Sie nicht denselben Namen zweimal verwenden.GUIDs therefore are a good way to generate names for things when you must guarantee that you won't use the same name twice. Der Nachteil ist natürlich, dass GUIDs nicht besonders benutzerfreundlich sind. Sie werden daher tendenziell verwendet, wenn der Name nur im Code verwendet wird.The downside, of course, is that GUIDs aren't particularly user friendly, so they tend to be used when the name is used only in code.

Größenänderungen bei BildernResizing an Image

Wenn Ihre Website Images von einem Benutzer akzeptiert, können Sie die Größe der Images ändern, bevor Sie Sie anzeigen oder speichern.If your website accepts images from a user, you might want to resize the images before you display or save them. Hierfür können Sie das WebImage-Hilfsprogramm wieder verwenden.You can again use the WebImage helper for this.

Diese Prozedur zeigt, wie die Größe eines hochgeladenen Bilds geändert wird, um eine Miniaturansicht zu erstellen und dann die Miniaturansicht und das ursprüngliche Bild auf der Website zu speichernThis procedure shows how to resize an uploaded image to create a thumbnail and then save the thumbnail and original image in the website. Sie zeigen die Miniaturansicht auf der Seite an und verwenden einen Hyperlink, um Benutzer an das Bild in voller Größe umzuleiten.You display the thumbnail on the page and use a hyperlink to redirect users to the full-sized image.

Klang[image]

  1. Fügen Sie eine neue Seite mit dem Namen " Miniatur. cshtml" hinzu.Add a new page named Thumbnail.cshtml.

  2. Erstellen Sie im Ordner Images einen Unterordner mit dem Namen Thumbs.In the images folder, create a subfolder named thumbs.

  3. Ersetzen Sie den vorhandenen Inhalt auf der Seite durch Folgendes:Replace the existing content in the page with the following:

    @{  
        WebImage photo = null;
        var newFileName = "";
        var imagePath = "";
        var imageThumbPath  = "";
    
        if(IsPost){
            photo = WebImage.GetImageFromRequest();
            if(photo != null){
                 newFileName = Guid.NewGuid().ToString() + "_" +
                     Path.GetFileName(photo.FileName);
                 imagePath = @"images\" + newFileName;
                 photo.Save(@"~\" + imagePath);
    
                imageThumbPath = @"images\thumbs\" + newFileName;
                photo.Resize(width: 60, height: 60, preserveAspectRatio: true,
                   preventEnlarge: true);
                photo.Save(@"~\" + imageThumbPath);        }
        }
    }
    <!DOCTYPE html>
    <html>
    <head>
      <title>Resizing Image</title>
    </head>
    <body>
    <h1>Thumbnail Image</h1>
      <form action="" method="post" enctype="multipart/form-data">
        <fieldset>
          <legend> Creating Thumbnail Image </legend>
          <label for="Image">Image</label>
          <input type="file" name="Image" />
          <br/>
          <input type="submit" value="Submit" />
        </fieldset>
      </form>
        @if(imagePath != ""){
        <div class="result">
            <img src="@imageThumbPath" alt="Thumbnail image" />
            <a href="@Html.AttributeEncode(imagePath)" target="_Self">
                View full size
            </a>
        </div>
    
        }
    </body>
    </html>
    

    Dieser Code ähnelt dem Code aus dem vorherigen Beispiel.This code is similar to the code from the previous example. Der Unterschied besteht darin, dass dieser Code das Bild zweimal speichert, einmal normal und einmal, nachdem Sie eine Miniaturansicht des Bilds erstellt haben.The difference is that this code saves the image twice, once normally and once after you create a thumbnail copy of the image. Zuerst erhalten Sie das hochgeladene Image und speichern es im Ordner Images .First you get the uploaded image and save it in the images folder. Anschließend erstellen Sie einen neuen Pfad für das Miniaturbild.You then construct a new path for the thumbnail image. Um die Miniaturansicht tatsächlich zu erstellen, rufen Sie die Resize-Methode des WebImage-Hilfsprogramms auf, um ein 60-Pixel-Bild mit 60 Pixel zu erstellen.To actually create the thumbnail, you call the WebImage helper's Resize method to create a 60-pixel by 60-pixel image. Das Beispiel zeigt, wie Sie das Seitenverhältnis beibehalten und verhindern können, dass das Bild vergrößert wird (für den Fall, dass die neue Größe das Bild tatsächlich vergrößert).The example shows how you preserve the aspect ratio and how you can prevent the image from being enlarged (in case the new size would actually make the image larger). Das Image, das in der Größe geändert wird, wird dann im Unterordner Thumbs gespeichert.The resized image is then saved in the thumbs subfolder.

    Am Ende des Markups verwenden Sie das gleiche <img>-Element mit dem dynamischen src Attribut, das Sie in den vorherigen Beispielen gesehen haben, um das Bild bedingt anzuzeigen.At the end of the markup, you use the same <img> element with the dynamic src attribute that you've seen in the previous examples to conditionally show the image. In diesem Fall zeigen Sie die Miniaturansicht an.In this case, you display the thumbnail. Außerdem verwenden Sie ein <a>-Element, um einen Hyperlink zur großen Version des Bilds zu erstellen.You also use an <a> element to create a hyperlink to the big version of the image. Wie beim src-Attribut des <img>-Elements legen Sie das href-Attribut des <a>-Elements dynamisch auf den Wert in imagePathfest.As with the src attribute of the <img> element, you set the href attribute of the <a> element dynamically to whatever is in imagePath. Um sicherzustellen, dass der Pfad als URL funktionieren kann, übergeben Sie imagePath an die Html.AttributeEncode-Methode, die reservierte Zeichen im Pfad in Zeichen konvertiert, die in einer URL OK sind.To make sure that the path can work as a URL, you pass imagePath to the Html.AttributeEncode method, which converts reserved characters in the path to characters that are ok in a URL.

  4. Führen Sie die Seite in einem Browser aus.Run the page in a browser.

  5. Hochladen eines Fotos und überprüfen, ob die Miniaturansicht angezeigt wird.Upload a photo and verify that the thumbnail is shown.

  6. Klicken Sie auf die Miniaturansicht, um das Bild in voller Größe anzuzeigen.Click the thumbnail to see the full-size image.

  7. Beachten Sie, dass in den Bildern und Bildern/Daumenneue Dateien hinzugefügt wurden.In the images and images/thumbs, note that new files have been added.

Drehen und Kippen eines BildsRotating and Flipping an Image

Mit dem WebImage-Hilfsprogramm können Sie auch Bilder kippen und drehen.The WebImage helper also lets you flip and rotate images. Diese Prozedur zeigt, wie Sie ein Bild vom Server erhalten, das Bild nach oben (vertikal) kippen, speichern und dann auf der Seite das gedrehte Bild anzeigen.This procedure shows how to get an image from the server, flip the image upside down (vertically), save it, and then display the flipped image on the page. In diesem Beispiel verwenden Sie nur eine Datei, die bereits auf dem Server vorhanden ist (Photo2. jpg).In this example, you're just using a file you already have on the server (Photo2.jpg). In einer echten Anwendung würden Sie wahrscheinlich ein Bild kippen, dessen Name Sie dynamisch erhalten, wie in den vorherigen Beispielen gezeigt.In a real application, you'd probably flip an image whose name you get dynamically, like you did in previous examples.

Klang[image]

  1. Fügen Sie eine neue Seite mit dem Namen flipimage. cshtmlhinzu.Add a new page named FlipImage.cshtml.

  2. Ersetzen Sie den vorhandenen Inhalt auf der Seite durch Folgendes:Replace the existing content in the page with the following:

    @{  var imagePath= "";
        WebImage photo = new WebImage(@"~\Images\Photo2.jpg");
        if(photo != null){
            imagePath = @"images\Photo2.jpg";
            photo.FlipVertical();
            photo.Save(@"~\" + imagePath);
         }
    }
    <!DOCTYPE html>
    <html>
    <head>
      <title>Get Image From File</title>
      <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    </head>
    <body>
    <h1>Flip Image Vertically</h1>
    @if(imagePath != ""){
      <div class="result">
        <img src="@imagePath" alt="Image" />
      </div>
    }
    </body>
    </html>
    

    Im Code wird das WebImage-Hilfsprogramm verwendet, um ein Bild vom Server zu erhalten.The code uses the WebImage helper to get an image from the server. Sie erstellen den Pfad zum Image mit dem Verfahren, das Sie in früheren Beispielen zum Speichern von Bildern verwendet haben, und übergeben diesen Pfad, wenn Sie ein Image mit WebImageerstellen:You create the path to the image using the same technique you used in earlier examples for saving images, and you pass that path when you create an image using WebImage:

    WebImage photo = new WebImage(@"~\Images\Photo2.jpg");
    

    Wenn ein Bild gefunden wird, erstellen Sie einen neuen Pfad und Dateinamen, wie in den vorherigen Beispielen gezeigt.If an image is found, you construct a new path and file name, like you did in earlier examples. Um das Bild zu kippen, wird die FlipVertical-Methode aufgerufen, und anschließend speichern Sie das Bild erneut.To flip the image, you call the FlipVertical method, and then you save the image again.

    Das Bild wird erneut auf der Seite angezeigt, indem das <img>-Element verwendet wird, wobei das src-Attribut auf imagePathfestgelegt ist.The image is again displayed on the page by using the <img> element with the src attribute set to imagePath.

  3. Führen Sie die Seite in einem Browser aus.Run the page in a browser. Das Bild für Photo2. jpg wird oben angezeigt.The image for Photo2.jpg is shown upside down.

  4. Aktualisieren Sie die Seite, oder fordern Sie die Seite erneut an, um anzuzeigen, dass das Bild von rechts nach oben gekippt wird.Refresh the page or request the page again to see the image is flipped right side up again.

Zum Drehen eines Bilds verwenden Sie denselben Code, mit dem Unterschied, dass Sie anstelle des FlipVertical oder FlipHorizontal``RotateLeft oder RotateRightaufrufen.To rotate an image, you use the same code, except that instead of calling the FlipVertical or FlipHorizontal, you call RotateLeft or RotateRight.

Hinzufügen eines Wasserzeichens zu einem BildAdding a Watermark to an Image

Wenn Sie Ihrer Website Bilder hinzufügen, empfiehlt es sich, dem Bild ein Wasserzeichen hinzuzufügen, bevor Sie es speichern oder auf einer Seite anzeigen können.When you add images to your website, you might want to add a watermark to the image before you save it or display it on a page. Benutzer verwenden häufig Wasserzeichen, um einem Image Copyright Informationen hinzuzufügen oder um Ihren Geschäftsnamen ankündigen zu können.People often use watermarks to add copyright information to an image or to advertise their business name.

Klang[image]

  1. Fügen Sie eine neue Seite mit dem Namen " Watermark. cshtml" hinzu.Add a new page named Watermark.cshtml.

  2. Ersetzen Sie den vorhandenen Inhalt auf der Seite durch Folgendes:Replace the existing content in the page with the following:

    @{  var imagePath= "";
        WebImage photo = new WebImage(@"~\Images\Photo3.jpg");
        if(photo != null){
            imagePath = @"images\Photo3.jpg";
            photo.AddTextWatermark("My Watermark", fontColor:"Yellow", fontFamily:
                "Arial");
            photo.Save(@"~\" + imagePath);    }
    }
    <!DOCTYPE html>
    <html>
    <head>
      <title>Water Mark</title>
      <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    </head>
    <body>
    <h1>Adding a Watermark to an Image</h1>
    @if(imagePath != ""){
      <div class="result">
        <img src="@imagePath" alt="Image" />
      </div>
    }
    </body>
    </html>
    

    Dieser Code ähnelt dem Code in der flipimage. cshtml -Seite von früher (obwohl dieses Mal die Datei Photo3. jpg verwendet).This code is like the code in the FlipImage.cshtml page from earlier (although this time it uses the Photo3.jpg file). Um das Wasserzeichen hinzuzufügen, müssen Sie die AddTextWatermark-Methode des WebImage-Hilfsprogramms vor dem Speichern des Bilds aufzurufen.To add the watermark, you call the WebImage helper's AddTextWatermark method before you save the image. Im AddTextWatermark-Befehl übergeben Sie den Text "meinem Wasserzeichen", legen die Schriftart Farbe auf gelb fest und legen die Schriftfamilie auf Arial fest.In the call to AddTextWatermark, you pass the text "My Watermark", set the font color to yellow, and set the font family to Arial. (Obwohl es hier nicht angezeigt wird, können Sie mit dem WebImage-Hilfsprogramm auch Deckkraft, Schriftfamilie und Schrift Grad sowie die Position des Wasserzeichen Texts angeben.) Wenn Sie das Abbild speichern, darf es nicht schreibgeschützt sein.(Although it's not shown here, the WebImage helper also lets you specify opacity, font family and font size, and the position of the watermark text.) When you save the image it must not be read-only.

    Wie Sie bereits gesehen haben, wird das Bild auf der Seite mit dem <img>-Element angezeigt, wobei das src-Attribut auf @imagePathfestgelegt ist.As you've seen before, the image is displayed on the page by using the <img> element with the src attribute set to @imagePath.

  3. Führen Sie die Seite in einem Browser aus.Run the page in a browser. Beachten Sie den Text "My Watermark" in der unteren rechten Ecke des Bilds.Notice the text "My Watermark" at the bottom-right corner of the image.

Verwenden eines Bilds als WasserzeichenUsing an Image As a Watermark

Anstatt Text für ein Wasserzeichen zu verwenden, können Sie ein anderes Bild verwenden.Instead of using text for a watermark, you can use another image. Manchmal werden Bilder wie ein Firmenlogo als Wasserzeichen verwendet, oder es wird ein Wasserzeichen Bild anstelle von Text für Copyright Informationen verwendet.People sometimes use images like a company logo as a watermark, or they use a watermark image instead of text for copyright information.

Klang[image]

  1. Fügen Sie eine neue Seite mit dem Namen " imagewatermark. cshtml" hinzu.Add a new page named ImageWatermark.cshtml.

  2. Fügen Sie dem Ordner Images ein Bild hinzu, das Sie als Logo verwenden können, und benennen Sie das Image mycompanylogo. jpgum.Add an image to the images folder that you can use as a logo, and rename the image MyCompanyLogo.jpg. Dieses Bild sollte ein Bild sein, das Sie eindeutig sehen können, wenn es auf 80 Pixel breit und 20 Pixel hoch festgelegt ist.This image should be an image that you can see clearly when it's set to 80 pixels wide and 20 pixels high.

  3. Ersetzen Sie den vorhandenen Inhalt auf der Seite durch Folgendes:Replace the existing content in the page with the following:

    @{  var imagePath = "";
       WebImage WatermarkPhoto = new WebImage(@"~\" +
            @"\Images\MyCompanyLogo.jpg");
        WebImage photo = new WebImage(@"~\Images\Photo4.jpg");
        if(photo != null){
            imagePath = @"images\Photo4.jpg";
            photo.AddImageWatermark(WatermarkPhoto, width: 80, height: 20,
               horizontalAlign:"Center", verticalAlign:"Bottom",
               opacity:100,  padding:10);
          photo.Save(@"~\" + imagePath);
       }
    }
    <!DOCTYPE html>
    <html>
    <head>
      <title>Image Watermark</title>
      <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    </head>
    <body>
      <h1>Using an Image as a Watermark</h1>
      @if(imagePath != ""){
        <div class="result">
          <img src="@imagePath" alt="Image" />
        </div>
      }
    </body>
    </html>
    

    Dies ist eine weitere Variation des Codes aus früheren Beispielen.This is another variation on the code from earlier examples. In diesem Fall wird AddImageWatermark aufgerufen, um dem Zielbild (Photo3. jpg) das Wasserzeichen Bild hinzuzufügen, bevor Sie das Bild speichern.In this case, you call AddImageWatermark to add the watermark image to the target image (Photo3.jpg) before you save the image. Wenn Sie AddImageWatermarkaufzurufen, legen Sie die Breite auf 80 Pixel und die Höhe auf 20 Pixel fest.When you call AddImageWatermark, you set its width to 80 pixels and the height to 20 pixels. Das Image " mycompanylogo. jpg " wird horizontal in der Mitte ausgerichtet und vertikal am unteren Rand des zielbilds ausgerichtet.The MyCompanyLogo.jpg image is horizontally aligned in the center and vertically aligned at the bottom of the target image. Die Deckkraft ist auf 100% festgelegt, und der Abstand wird auf 10 Pixel festgelegt.The opacity is set to 100% and the padding is set to 10 pixels. Wenn das Wasserzeichen Bild größer als das Zielbild ist, wird nichts passieren.If the watermark image is bigger than the target image, nothing will happen. Wenn das Wasserzeichen Bild größer als das Zielbild ist und Sie den Leerraum für das Bild Wasserzeichen auf NULL festlegen, wird das Wasserzeichen ignoriert.If the watermark image is bigger than the target image and you set the padding for the image watermark to zero, the watermark is ignored.

    Wie zuvor zeigen Sie das Bild mithilfe des <img>-Elements und eines dynamischen src-Attributs an.As before, you display the image using the <img> element and a dynamic src attribute.

  4. Führen Sie die Seite in einem Browser aus.Run the page in a browser. Beachten Sie, dass das Wasserzeichen Bild unten im Hauptbild angezeigt wird.Notice that the watermark image appears at the bottom of the main image.

Zusätzliche RessourcenAdditional Resources

Arbeiten mit Dateien an einer ASP.net Web Pages SiteWorking with Files in an ASP.NET Web Pages Site

Einführung in ASP.net Web Pages Programmierung mithilfe der Razor-SyntaxIntroduction to ASP.NET Web Pages Programming Using the Razor Syntax