Satt och klurade ett bra tag när jag höll på med ASP för att få koden att fungera, nu har jag gått över till .NET och att fixa det som jag gjorde i ASP är ren grekiska för mig.
Jag använder mig utav C# och skulle vilja ha lite guidening för att kunna fixa det här.
Först för att ladda upp en bild gjorde jag så här:
// Kollar om det finns en mapp med användarens ID i Upload mappen. Om det inte finns så läggs en till.
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If Not objFSO.FolderExists(Server.MapPath("/upload/" & intUserID)) Then
objFSO.CreateFolder(Server.MapPath("/upload/" & intUserID))
End if
Set objFSO = Nothing
// Jag vill att max storleken ska vara 2mb.
Call dbOpen(Connect)
Set objUpload = Server.CreateObject("Persits.Upload")
objUpload.SetMaxSize 200000, True
objUpload.OverwriteFiles = True
objUpload.SaveToMemory
For Each File In objUpload.Files
If LCase(File.ImageType) = "jpg" Or LCase(File.ImageType) = "jpeg" Or LCase(File.ImageType) = "bmp" Or LCase(File.ImageType) = "gif" Then
If Not File.ImageWidth < "100" Or Not File.ImageHeight < "100" Then
File.SaveAs Server.MapPath("/upload/" & intUserID & "/" & intUserID & "_tmp.jpg")
Else
Session("strAlert") = "Bilden måste vara MINST 100x100px!"
Response.Redirect "?p=image_settings"
End If
Else
Session("strAlert") = "Fel filformat!"
Response.Redirect "?p=image_settings"
End If
Next
Set objUpload = Nothing
Efter detta så kommer man till en sida där man ska skala bilden, jag vill då skala bilden med hjälp av x,y, widht och height:
int x = 0;
int y = 0;
int w = 190;
int h = 244;
string strFilename = Server.MapPath("Upload/" + Convert.ToString(Session["intID"]) + "/" + Convert.ToString(Session["intID"]) + ".jpg");
System.Drawing.Image i = System.Drawing.Image.FromFile(strFilename);
System.Drawing.Image b = new System.Drawing.Bitmap(i.Width, i.Height, PixelFormat.Format24bppRgb);
int sheight = i.Height;
int swidth = i.Width;
int sx = 0;
int sy = 0;
Graphics g = Graphics.FromImage(b);
g.DrawImage(i, 0, 0, new Rectangle(x, y, w, h), GraphicsUnit.Pixel);
Response.ContentType = "image/jpeg";
b.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
b.Dispose();
När jag har klickat på knappen som anropar skriptet så syns bilden, fast det blir ju inte som jag vill. Bilden är i orginalstorleken och svart runt om förutom det som jag har markerat (y,x,w,h) det är så som jag vill ha det. Fast jag vill ju klippa ut enbart den bilden så det svarta försvinner.
Sedan så sparas inte bilden, om jag går in på någonm annan sida och skriver in sökvägen så är den bilden som jag laddade upp först kvar.
Så hjälp mig.
Hur gör jag för att klippa ut en bild med hjälp av y,x,w,h och sedan spara den?
jag har också varit inne på den svängen. Men det roliga är att jag får samma felmeddelande när jag debuggar som när jag kör på mitt webbhotell.
Och jag vet att mitt webbhotell har rättigheter på den mappen som jag laddar upp till för det är det den mappen är till för.
Så här ser min kod ut nu:
int destX = Convert.ToInt32(Request.Form["y1"]);
int destY = Convert.ToInt32(Request.Form["x1"]);
int destWidth = Convert.ToInt32(Request.Form["width"]);
int destHeight = Convert.ToInt32(Request.Form["height"]);
string strFilename = Server.MapPath("Upload/" + Convert.ToString(Session["intID"]) + "/" + Convert.ToString(Session["intID"]) + ".jpg");
System.Drawing.Image i = System.Drawing.Image.FromFile(strFilename);
Bitmap b = new System.Drawing.Bitmap(destWidth, destWidth);
b.SetResolution(i.HorizontalResolution, i.VerticalResolution);
Graphics g = Graphics.FromImage(b);
g.InterpolationMode = InterpolationMode.Low;
g.DrawImage(i, 0, 0, new Rectangle(destX, destY, destWidth, destHeight), GraphicsUnit.Pixel);
g.Dispose();
b.Save(strFilename, System.Drawing.Imaging.ImageFormat.Jpeg);
b.Dispose();
A generic error occurred in GDI+. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.
Source Error:
Line 92: g.Dispose();
Line 93:
Line 94: b.Save(strFilename, System.Drawing.Imaging.ImageFormat.Jpeg);
Line 95: b.Dispose();
Line 96: }
Source File: C:\Documents and Settings\Micke\Mina dokument\Visual Studio 2005\Projects\LL\LinkopingLife\ImageSettings.aspx.cs Line: 94
Zaiman, helt riktigt!
Märkte det nu när jag höll på att pilla med koden och råkade av rent misstag ändra så jag ändrade namn på filen då fungerade det alldeles utmärkt!
Nu ska jag kolla på koden som du skrev tidigare och se om jag kan få till det bättre, för nu så beskärs inte bilden som jag vill. Tack för hjälpen så länge!