Erstellen Sie thumbnail .NET C# durch die Festlegung der Breite

Ich bin mit dem folgenden code in meine website, für die thumbnail-Erstellung:

string furl = "~/images/thumbs/" + matchString;
lBlogThumb.ImageUrl = GetThumbnailView(furl, 200, 200);


private string GetThumbnailView(string originalImagePath, int height, int width)
        {
            //Consider Image is stored at path like "ProductImage\\Product1.jpg"

            //Now we have created one another folder ProductThumbnail to store thumbnail image of product.
            //So let name of image be same, just change the FolderName while storing image.
            string thumbnailImagePath = originalImagePath.Replace("thumbs", "thumbs2");
            //If thumbnail Image is not available, generate it.
            if (!System.IO.File.Exists(Server.MapPath(thumbnailImagePath)))
            {
                System.Drawing.Image imThumbnailImage;
                System.Drawing.Image OriginalImage = System.Drawing.Image.FromFile(Server.MapPath(originalImagePath));
                imThumbnailImage = OriginalImage.GetThumbnailImage(width, height,
                             new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);

                imThumbnailImage.Save(Server.MapPath(thumbnailImagePath), System.Drawing.Imaging.ImageFormat.Jpeg);

                imThumbnailImage.Dispose();
                OriginalImage.Dispose();
            }
            return thumbnailImagePath;
        }

public bool ThumbnailCallback() { return false; }

Möchte ich ändern diesen code, und in der Lage sein, erstellen Sie eine Miniaturansicht der Festlegung der Breite NUR. Was ich im Sinn haben, ist eigentlich so etwas wie beschneiden/Größenänderung Bild, mit einer festen Breite, die Aufrechterhaltung es-Verhältnis. Ist das möglich;

  • Ist es das, was Sie wollen? newHeight = oldHeight * newWidth / oldWidth, nicht sicher, was Sie meinen, wenn Sie sagen, Sie wollen, um das Bild zu beschneiden - tun Sie zuschneiden möchten, UND ändern Sie die Größe?
  • danke für Eure Hilfe
  • idk warum, aber diese für mich ein "out of memory" äh.. gibt es überhaupt jemand der können legen Sie eine Ausnahme für diese? Ich weiß wirklich nicht, wie C# mit Speicher umgeht.
  • Dies ist mehrere Jahre alt jetzt, aber du hast den Fehler wahrscheinlich nicht, weil Sie müssen gegossen ints (Image.Height und Image.Width) zu einem der floating-point-Typen. Ich empfehle decimal.
InformationsquelleAutor zekia | 2011-01-11
Schreibe einen Kommentar