Come ritagliare l'immagine senza modificare le proporzioni
-
13-11-2019 - |
Domanda
ho bisogno di Ritaglia Un'immagine senza modificare il suo rapporto di aspetto. Sto scattando foto da Canon1100d Usando EDSDK. Immagine catturata: Larghezza = 1920 e Altezza = 1280
La razione di aspetto è 1.5. Ma ho bisogno di un'immagine quale proporzione è 1.33.
// convert into processing resolution (1600,1200)
Image<Bgr, byte> runtime_frm = new Image<Bgr, byte>(frame.ToBitmap(1600,1200));
// also in bitmap processing
// Bitmap a = new Bitmap(runtime_frm.ToBitmap());
// Bitmap b = new Bitmap(a, new Size(1600,1200));
Sta ridimensionando l'immagine in modo che l'aspetto dell'immagine venga modificata ma crea stress nell'immagine. Ho bisogno di ritagliare l'immagine (1920x1280) a (1600x1200) in fase di esecuzione.
Come posso farlo a livello di programmazione? qualche idea
Soluzione
public void Crop(Bitmap bm, int cropX, int cropY,int cropWidth,int cropHeight)
{
var rect = new System.Drawing.Rectangle(cropX,cropY,cropWidth,cropHeight);
Bitmap newBm = bm.Clone(rect, bm.PixelFormat);
newBm.Save("image2.jpg");
}
Forse qualcosa del genere?
Altri suggerimenti
Questa è la mia soluzione per il ritaglio centrato.
Bitmap CenterCrop(Bitmap srcImage, int newWidth, int newHeight)
{
Bitmap ret = null;
int w = srcImage.Width;
int h = srcImage.Height;
if ( w < newWidth || h < newHeight)
{
MessageBox.Show("Out of boundary");
return ret;
}
int posX_for_centerd_crop = (w - newWidth) / 2;
int posY_for_centerd_crop = (h - newHeight) / 2;
var CenteredRect = new Rectangle( posX_for_centerd_crop,
posY_for_centerd_crop, newWidth, newHeight);
ret = srcImage.Clone(imageCenterRect, srcImage.PixelFormat);
return ret;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow