Avatar billede target Nybegynder
16. januar 2007 - 16:34 Der er 13 kommentarer og
2 løsninger

Konvertering fra WebControls.Image til Drawing.Bitmap

Hej.

Jeg har et website, hvor jeg får billeder ud fra en database istedet for fra fysiske filer. Dvs. min src på mit img kunne f.eks. være: "~/media/9F7BDFFC4B6B42CBBC4B7267A2821233.ashx"

Nu er sagen den, at jeg har brug for at croppe/beskære dette billede og gemme det som et nyt billede. Jeg har fundet en metode på nettet der kan gøre dette, men det kræver at det originale billede kommer ind som et objekt af typen "System.Drawing.Bitmap", og dette ville man normalt gøre ved at åbne billedet fysisk fra serveren.

Dette kan jeg i midlertidigt ikke, da mine billeder kommer fra en database.

Jeg har mulighed for at gemme billedet midlertidigt på serveren, hvis dette kan hjælpe.

Mit spørgsmål er så, om i kan forklare mig en måde, hvorpå jeg enten kan konvertere mit objekt fra System.Web.UI.WebControls.Image til System.Drawing.Bitmap, eller om i kender en anden måde at croppe billedet på, hvor original billedet ikke behøver at være typen Bitmap.
Avatar billede dr_chaos Nybegynder
17. januar 2007 - 07:42 #1
Du gøre det ved at lave noget i denne stil
byte[] myPic = datarow["img]; <--- skal være når du henter billede fra databasen.
Long k = myPic.Length;
System.IO.FileStream fs = new System.IO.FileStream("c:\temp\billede.jpg", System.IO.FileMode.Create, System.IO.FileAccess.Write);
fs.Write(myPic, 0, k);
fs.Close() ;
System.Drawing.Bitmap b = new System.Drawing.Bitmap("c:\temp\billede.jpg");
Muligvis kan du også loade billedet fra filestream eller memory stream i stedet for.
Avatar billede target Nybegynder
17. januar 2007 - 08:38 #2
Ja det var en mulighed, men jeg har desværre ikke adgang direkte til databasen, ellers var det en god løsning.
Kan kun få adgang til billedet ved at kalde {id}.ashx
Avatar billede dr_chaos Nybegynder
17. januar 2007 - 08:41 #3
hmm kan du loade et bitmap fra ashx filen ?
Avatar billede target Nybegynder
17. januar 2007 - 09:08 #4
Ikke umiddelbart... I så fald, ved jeg ikke hvordan jeg skulle gøre dette.
Avatar billede dr_chaos Nybegynder
17. januar 2007 - 09:23 #5
prøv lige med:
System.Drawing.Bitmap b = new System.Drawing.Bitmap("/media/9F7BDFFC4B6B42CBBC4B7267A2821233.ashx");
Avatar billede target Nybegynder
17. januar 2007 - 09:30 #6
Så får jeg følgende fejl:
System.ArgumentException: Invalid parameter
Avatar billede dr_chaos Nybegynder
17. januar 2007 - 09:47 #7
Du skriver at du kan gemme billedet midlertidigt på serveren.
Hvordan kan du det ?
Avatar billede target Nybegynder
17. januar 2007 - 09:48 #8
Det jeg mente med det var, at jeg har rettigheder til det, men jeg har ikke fundet en måde at gøre det på.
Undskyld hvis det var lidt dårligt formuleret
Avatar billede dr_chaos Nybegynder
17. januar 2007 - 09:58 #9
Det er hvad der sker.
Hvordan kan det være du ikke har adgang til databasen ?
Avatar billede target Nybegynder
17. januar 2007 - 10:02 #10
Jeg har til dels også adgang til databasen, men hele sitet er bygget op omkring et CMS-system, som står for alt adgang til databasen, så jeg har ingen idé om strukturen i databasen osv.
Avatar billede target Nybegynder
17. januar 2007 - 10:05 #11
Og jeg ville meget gerne undgå, at skulle gå direkte i databasen, hvis der nogen som helst udvej.
Avatar billede dr_chaos Nybegynder
17. januar 2007 - 12:47 #12
Jeg kan desværre ikke se andre muligheder.
Men muligvis er der andre som ved bredre.
Avatar billede target Nybegynder
17. januar 2007 - 13:16 #13
Ja... Jeg prøver at lade spørgsmålet stå åbent lidt endnu.

Hvis det kan hjælpe andre, så er det Sitecore som bliver brugt som CMS system
Avatar billede target Nybegynder
19. januar 2007 - 09:14 #14
Efter intens søgning på nettet fandt jeg en løsning på mit problem.
Jeg endte med at bruge functionen:
System.Net.WebClient.DownloadFile(URI)

Jeg vil dog gerne belønne dr_chaos for hans hurtige kommentarer og indsats.
Så hvis du opretter et svar, så får du point.
Avatar billede dr_chaos Nybegynder
19. januar 2007 - 10:00 #15
gerne :)
Jeg tænkte slet ikke på webclient.
Jeg her endda selv brugt den i forbindelse med noget streaming af pdf :/
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester