Just nu i M3-nätverket
Gå till innehåll
robban82

Skala bilder proportionerligt?

Rekommendera Poster

Med skriptet nedan kan jag anpassa bredd och höjd på en bild automatiskt:

bild.aspx?img=varberg.jpg&w=250&h=200

 

Men jag skulle vilja att det räckte att man skrev:

bild.aspx?img=varberg.jpg&w=250

Att den med andra ord automatiskt läser in höjden på originalbilden och anpassar den proportionerligt mot den bredd man vill ha.

 

Går det?

 

<%@Import Namespace="System.Drawing.Imaging" %>
<script language="VB" runat="server">
 Function ThumbnailCallback() as Boolean
   Return False
 End Function


 Sub Page_Load(sender as Object, e as EventArgs)

   'Read in the image filename to create a thumbnail of
   Dim imageUrl as String = Request.QueryString("img")

   'Read in the width and height
   Dim imageHeight as Integer = Request.QueryString("h")
   Dim imageWidth as Integer = Request.QueryString("w")

   'Make sure that the image URL doesn't contain any /'s or \'s
   If imageUrl.IndexOf("/") >= 0 Or imageUrl.IndexOf("\") >= 0 then
     'We found a / or \
     Response.End()
   End If

   'Add on the appropriate directory
   imageUrl = "artikelbilder/" & imageUrl

   Dim fullSizeImg as System.Drawing.Image
   fullSizeImg = System.Drawing.Image.FromFile(Server.MapPath(imageUrl))

   'Do we need to create a thumbnail?
   Response.ContentType = "image/jpeg"
   If imageHeight > 0 and imageWidth > 0 then
     Dim dummyCallBack as System.Drawing.Image.GetThumbNailImageAbort
     dummyCallBack = New System.Drawing.Image.GetThumbnailImageAbort(AddressOf ThumbnailCallback)

     Dim thumbNailImg as System.Drawing.Image
     thumbNailImg = fullSizeImg.GetThumbnailImage(imageWidth, imageHeight, dummyCallBack, IntPtr.Zero)

     thumbNailImg.Save(Response.OutputStream, ImageFormat.Jpeg)  

     'Clean up / Dispose...
     ThumbnailImg.Dispose()
   Else
     fullSizeImg.Save(Response.OutputStream, ImageFormat.Jpeg)  
   End If

   'Clean up / Dispose...
   fullSizeImg.Dispose()
 End Sub
</script>

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
...den proportionerligt mot den bredd man vill ha.
Då får du väl antingen räkna ut ett procent- eller indexvärde för bredd-förändringen och sedan använda det värdet till höjd-förändringen.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Du hämtar ju bilden till image-objektet fullSizeImg så du har orginalbildens höjd och bredd. Då är det bara att räkna ut vilken multipel du ska använda för höljden.

 

Dim fullSizeImg as System.Drawing.Image
fullSizeImg = System.Drawing.Image.FromFile(Server.MapPath(imageUrl))

 

Lägg till detta efter koden ovanför:

'Sätt höjd om den ej är angiven
If String.IsNullOrEmpty(imageHeight) Then
   'Hitta multipeln
   Double x = imageWidth / fullSizeImg.Height
   'Sätt höjden
   imageHeight = fullSizeImg.Height * x
End If 

Jag har inte testat koden så det kan ha smygit sig in nåt syntaxfel eller nåt. Men du fattar :)

 

 

[inlägget ändrat 2009-07-13 16:45:47 av PatrikA]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...