Avatar billede idiotbarn Nybegynder
05. april 2006 - 17:10 Der er 9 kommentarer og
2 løsninger

crop image asp.net 1.1

Er det muligt for mig at sige at jeg vil ha et billede klippet ud af et større billede? Hvis jeg ville ha retuneret en del af billedet fra position x,y som er h højt og w bredt, kan det så lade sig gøre?

Jeg har prøvet lidt af hvert, men ind til videre får jeg kun sorte og hvide kasser rundt omkring...
Avatar billede dr_chaos Nybegynder
05. april 2006 - 17:32 #1
du kan gøre det på denne måde:
System.Drawing.Image i= System.Drawing.Image.FromFile("dinfil");

                    System.Drawing.Bitmap b = new System.Drawing.Bitmap(i.Width, i.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
                    Bitmap copy = b.Clone(new Rectangle(0, 0, 10, 10), System.Drawing.Imaging.PixelFormat.Format24bppRgb); ;
Avatar billede idiotbarn Nybegynder
05. april 2006 - 17:45 #2
Hmm...så må det være mig der gør noget forkert...hvis jeg bare vil ha billedet udskrevet til siden har jeg før brugt (til thumb)
copy.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
men så f¨r jeg bare en lille sort box?
Avatar billede dr_chaos Nybegynder
05. april 2006 - 17:55 #3
hmm lyder mærkeligt.

jeg fandt denne funktion:
puplic Image Crop(Image p)
{
Int32 x;
Int32 y;
Bitmap b = new Bitmap(p);
Color c = new Color();
Int32 intLeft;
Int32 intRight;
Int32 intBottom;
Int32 intTop;
y = 0;
while (!(y == b.Height)) {
  x = 0;
  while (!(x == b.Width)) {
    c = b.GetPixel(x, y);
    if (c.R != 0 & c.G != 0 & c.B != 0) {
      if (c.R < 250 | c.G < 250 | c.B < 250) {
        if (intLeft <= 0 & intLeft < x) {
          intLeft = x;
        }
        if (intTop <= 0 & intTop < y) {
          intTop = y;
        }
        if (intRight <= b.Width & intRight < x) {
          intRight = x;
        }
        if (intBottom <= b.Height & intBottom < y) {
          intBottom = y;
        }
      }
    }
    x += 1;
  }
  y += 1;
}
Int32 intNewWidth = (intRight);
Int32 intNewHeight = (intBottom);
Bitmap imgCropped = new Bitmap(intNewWidth + 10, intNewHeight + 10);
Graphics objGraphics = Graphics.FromImage(imgCropped);
objGraphics.Clear(System.Drawing.Color.White);
Int32 intStartTop = 5;
Int32 intStartLeft = 5;
objGraphics.DrawImage(b, intStartLeft, intStartTop);
b.Dispose();
objGraphics.Dispose();
return imgCropped;
}
Avatar billede dr_chaos Nybegynder
05. april 2006 - 17:56 #4
ved ikke om den kan gøre det.
Avatar billede idiotbarn Nybegynder
05. april 2006 - 17:58 #5
Ja...har også kikket på den (det ligner ihvertfald den på eksperten) Men jeg må lave noget forkert når jeg gemmer den til siden. Kan selvfølgeligt prøve lidt frem og tilbage...troede det var måden jeg klippede den på den var gal med...
Avatar billede idiotbarn Nybegynder
06. april 2006 - 19:38 #6
Men ingen ide om hvorfor jeg kun får sorte kasser? (de er på størrelse med rectangle der bliver oprettet)
Avatar billede idiotbarn Nybegynder
06. april 2006 - 21:42 #7
Hmm...ok, nu virker det hvis jeg vil klippe fra venstre hjørne...hvad hvis man gerne vil ha noget inde midt i?
Avatar billede idiotbarn Nybegynder
06. april 2006 - 22:11 #8
Ok...det her virker, men billedet der bliver gemt er ca 10 gange større end det originale. Hvordan undgår man det?


String Path = Server.MapPath("ba12790.jpg");
System.Drawing.Image imgFullSize = System.Drawing.Image.FromFile(Path);
double ImgHeight = imgFullSize.Height;
double ImgWidth = imgFullSize.Width;

int iWidth = int.Parse(Math.Ceiling(ImgWidth).ToString());
int iHeight = int.Parse(Math.Ceiling(ImgHeight).ToString());
           
Bitmap bmNew = new Bitmap(rx, ry);
Graphics g = Graphics.FromImage(bmNew);
g.Clear(System.Drawing.Color.Aquamarine);
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.AssumeLinear;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None;
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default;
g.DrawImage(imgFullSize,new Rectangle(0,0,rx,ry),offx,offy,rx,ry, System.Drawing.GraphicsUnit.Pixel);
g.Dispose();       
bmNew.Save(Server.MapPath(".")+"\\Folder\\TMP.jpg");
Avatar billede dr_chaos Nybegynder
07. april 2006 - 08:19 #9
altså bruger 10 gange mere plads på harddisken ?
Avatar billede idiotbarn Nybegynder
17. april 2006 - 02:00 #10
mja...det var vist noget med billedet, for den gør det ikke mere...Skal vi være sociale og dele :)
Avatar billede dr_chaos Nybegynder
17. april 2006 - 08:08 #11
gerne :)
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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