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

Skala bilder proportionerligt?


robban82

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>

 

 

Länk till kommentar
Dela på andra webbplatser

Micke_skane
...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.

 

Länk till kommentar
Dela på andra webbplatser

OK!

 

Har du något exempel på hur jag kan lösa med min kod?

[inlägget ändrat 2009-07-12 13:24:36 av robban82]

Länk till kommentar
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]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...