2017-01-06 2 views
-3

J'ai une photo par exemple (cette photo a un X: 467 Y: 300) J'ai juste besoin de X: 0 Y: 0 à X: 200 Y : 45 J'utiliser ce code pour la campagne agricole mais j'ai perdu des données de X: 0 Y: 0 à X: 200 Y: 45 Je ne sais pas que faireComment définir mon X et Y de Pic Pour enregistrer une image C#

bmp.Save("@image.png", ImageFormat.Png); 
     Image img = new Bitmap("@image.png"); 
     Rectangle source = new Rectangle(0, 0, ww, hh); 
     Image cropped = CropImage(img, source); 
     cropped.Save(Path.GetDirectoryName("@image.png") + "croppped" + Path.GetExtension("@image.png")); 
    } 

    private Bitmap CropImage(Image originalImage, Rectangle sourceRectangle,Rectangle? destinationRectangle = null) 
    { 
     if (destinationRectangle == null) 
     { 
      destinationRectangle = new Rectangle(Point.Empty, sourceRectangle.Size); 
     } 

     var croppedImage = new Bitmap(destinationRectangle.Value.Width, 
      destinationRectangle.Value.Height); 
     using (var graphics = Graphics.FromImage(croppedImage)) 
     { 
      graphics.DrawImage(originalImage, destinationRectangle.Value, 
       sourceRectangle, GraphicsUnit.Pixel); 
     } 
     return croppedImage; 
    } 
+0

Impossible de reproduire, votre 'CropImage' semble fonctionner correctement. Est-ce votre code actuel ou êtes-vous en train de fournir des valeurs différentes pour les paramètres du rectangle? –

+0

@ C.Evenhuis oui c'est mon code original Y at-il un moyen de faire une image sans utiliser l'image originale? – amir

+0

@ C.Evenhuis Son fonctionnement mais j'ai perdu des données Quelque peu comment – amir

Répondre

0

d'après les commentaires que je comprends que vous voulez recadrez l'image avant d'enregistrer l'image originale sur le disque. Dans ce cas, vous pouvez directement fournir l'image à la méthode de recadrage:

// bmp.Save("@image.png", ImageFormat.Png); 
    // Image img = new Bitmap("@image.png"); 
    Rectangle source = new Rectangle(0, 0, ww, hh); 
    Image cropped = CropImage(bmp, source); // <-- bmp supplied to crop method directly 
    cropped.Save(Path.GetDirectoryName("@image.png") + "croppped" + Path.GetExtension("@image.png"));