jazzilMedlem sedan maj 2003151 inlägg Jag har gjort ett litet galleri.
Och nu vill jag skapa thumbnail
Funktionen ska kommas åt igenom.
thumb.aspx?name=bild.jpg
Jag har sökt på detta forum och på google utan vidare reslutat. Jag har fått en som funkar men kvaliten var as dålig och den var skriven i vb och jag använder c#
Finns det något sätt att clippa rektangulära bilder?
Så att skriptet först gör bilden fyrkantig och senda förminska ner till 100x100 px?
Tacksamm för svar !!
fredrikMedlem sedan dec. 19991 072 inlägg Ta en titt på följande:
http://www.webforum.nu/showthread.php?s=&forumid=29&threadid=79164&highlight=image
(glöm dock inte att ändra "ordning" på koden enligt sista inlägget, så att "drawImage" och "save" kommer EFTER inställningarna)
jazzilMedlem sedan maj 2003151 inlägg Har gjort om din kod lite
<%@ Page Language="vb"%>
<%@ import namespace="System.Drawing" %>
<%@ import namespace="System.Drawing.Imaging" %>
<script runat="server">
sub Page_Load()
Dim iWidth, iHeight As Integer
Dim szFileName As String
szFileName = Server.MapPath(Request.QueryString("name"))
iWidth = 100
iHeight = 100
Dim image As System.Drawing.Image = image.FromFile(szFileName)
Dim bmp As New Bitmap(iWidth, iHeight)
Dim gr As Graphics = Graphics.FromImage(bmp)
gr.save()
gr.InterpolationMode = Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
gr.SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighQuality
gr.CompositingQuality = Drawing.Drawing2D.CompositingQuality.HighQuality
gr.CompositingMode = Drawing.Drawing2D.CompositingMode.SourceCopy
gr.DrawImage(image, 0, 0, iWidth, iHeight)
gr.Save()
Dim eps As EncoderParameters = New EncoderParameters(2)
eps.Param(0) = New EncoderParameter(Encoder.Quality, lCompression)
eps.Param(1) = New EncoderParameter(New Encoder(Encoder.Compression.Guid), EncoderValue.CompressionLZW)
Dim ici As ImageCodecInfo = GetEncoderInfo("image/jpeg")
Response.ContentType = "image/jpeg"
bmp.Save(Response.OutPutStream, Imaging.ImageFormat.Jpeg)
image.Dispose()
bmp.Dispose()
end sub
</script>
Jag får felmeddelandet
BC30561: 'Encoder' is ambiguous, imported from the namespaces or types 'System.Text, System.Drawing.Imaging'.
fredrikMedlem sedan dec. 19991 072 inlägg Byt ut "Encoder" mot "System.Drawing.Imaging.Encoder" så ska det funka...
tror heller inte att du behöver göra "gr.save()" innan du sätter inställningarna...utan bara efter...
jazzilMedlem sedan maj 2003151 inlägg Nu får jag felet
Name 'lCompression' is not declared.
fredrikMedlem sedan dec. 19991 072 inlägg Värdet "lCompression" (integer tror jag) är ett värde där du anger vilken JPG-kvalitet du vill att bilden ska ha. 100 är max. Runt 70 brukar vara bra.
jazzilMedlem sedan maj 2003151 inlägg Tack! för all hjälp :)
Slut koden
<%@ Page Language="vb"%>
<%@ import namespace="System.Drawing" %>
<%@ import namespace="System.Drawing.Imaging" %>
<script runat="server">
sub Page_Load()
Dim iWidth, iHeight As Integer
Dim szFileName As String
szFileName = Server.MapPath(Request.QueryString("name"))
iWidth = 100
iHeight = 100
Dim image As System.Drawing.Image = image.FromFile(szFileName)
Dim bmp As New Bitmap(iWidth, iHeight)
Dim gr As Graphics = Graphics.FromImage(bmp)
gr.InterpolationMode = Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
gr.SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighQuality
gr.CompositingQuality = Drawing.Drawing2D.CompositingQuality.HighQuality
gr.CompositingMode = Drawing.Drawing2D.CompositingMode.SourceCopy
gr.DrawImage(image, 0, 0, iWidth, iHeight)
gr.Save()
Dim eps As EncoderParameters = New EncoderParameters(2)
eps.Param(0) = New EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100)
eps.Param(1) = New EncoderParameter(New System.Drawing.Imaging.Encoder(System.Drawing.Imaging.Encoder.Compression.Guid), EncoderValue.CompressionLZW)
Response.ContentType = "image/jpeg"
bmp.Save(Response.OutPutStream, Imaging.ImageFormat.Jpeg)
image.Dispose()
bmp.Dispose()
end sub
</script>
Nu ska jag bara skriva om den till c# :D
EDIT:
C#
<%@ Page Language="c#"%>
<%@ import namespace="System.Drawing" %>
<%@ import namespace="System.Drawing.Imaging" %>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
int iHeight, iWidth, Quality;
string szFileName;
szFileName = Server.MapPath(Request.QueryString["name"]);
iWidth = 100;
iHeight = 100;
Quality = 100;
System.Drawing.Image image = System.Drawing.Image.FromFile(szFileName);
Bitmap bmp = new Bitmap(iWidth, iHeight);
Graphics gr = Graphics.FromImage(bmp);
gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
gr.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
gr.DrawImage(image, 0, 0, iWidth, iHeight);
gr.Save();
EncoderParameters eps = new EncoderParameters(1);
eps.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Quality);
Response.ContentType = "image/jpeg";
bmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
image.Dispose();
bmp.Dispose();
}
</script>
jazzilMedlem sedan maj 2003151 inlägg Dim image As System.Drawing.Image = image.FromFile(szFileName)
Hur överstätts den till c#?
System.Drawing.Image image;
image.FromFile(szFileName);
Så har jag försökt med det funkar inge vidare ...
Fel: The type or namespace name 'image' could not be found (are you missing a using directive or an assembly reference?)
fredrikMedlem sedan dec. 19991 072 inlägg borde vara typ:
System.Drawing.Image image = System.Drawing.Image.FromFile(szFileName)
jazzilMedlem sedan maj 2003151 inlägg EDIT: Obs .. helt fel tråd