图片操作 bitmap 旋转 bitmap左右镜像
public static Bitmap RotateImage ( Bitmap image, int angle) { try { Bitmap rotatedImage = new Bitmap ( image. Height, image. Width) ; using ( Graphics g = Graphics. FromImage ( rotatedImage) ) { g. TranslateTransform ( rotatedImage. Width / 2 , rotatedImage. Height / 2 ) ; g. RotateTransform ( angle) ; g. DrawImage ( image, - image. Width / 2 , - image. Height / 2 , image. Width, image. Height) ; return rotatedImage; } } catch ( AccessViolationException ave) { return null ; } } public static Bitmap RotateImage2 ( Bitmap originalImage, float angle) { int width = originalImage. Width; int height = originalImage. Height; double radians = angle * Math. PI / 180.0 ; double sin = Math. Abs ( Math. Sin ( radians) ) ; double cos = Math. Abs ( Math. Cos ( radians) ) ; int newWidth = ( int ) Math. Floor ( width * cos + height * sin) ; int newHeight = ( int ) Math. Floor ( width * sin + height * cos) ; Bitmap rotatedImage = new Bitmap ( newWidth, newHeight) ; using ( Graphics g = Graphics. FromImage ( rotatedImage) ) { g. InterpolationMode = InterpolationMode. HighQualityBicubic; g. SmoothingMode = SmoothingMode. HighQuality; g. PixelOffsetMode = PixelOffsetMode. HighQuality; g. CompositingQuality = CompositingQuality. HighQuality; Point center = new Point ( newWidth / 2 , newHeight / 2 ) ; g. TranslateTransform ( center. X, center. Y) ; g. RotateTransform ( angle) ; g. TranslateTransform ( - center. X, - center. Y) ; g. DrawImage ( originalImage, new Point ( ( newWidth - width) / 2 , ( newHeight - height) / 2 ) ) ; } return rotatedImage; } public static Bitmap BitmapImage2 ( Bitmap originalImage) { { Bitmap flippedImage = new Bitmap ( originalImage. Width, originalImage. Height) ; using ( Graphics g = Graphics. FromImage ( flippedImage) ) { g. DrawImage ( originalImage, new Rectangle ( 0 , 0 , flippedImage. Width, flippedImage. Height) , new Rectangle ( originalImage. Width, 0 , - originalImage. Width, originalImage. Height) , GraphicsUnit. Pixel) ; } return flippedImage; } } public static Bitmap BitmapImage ( Bitmap originalBitmap) { Bitmap mirroredBitmap = new Bitmap ( originalBitmap. Width, originalBitmap. Height) ; for ( int y = 0 ; y < originalBitmap. Height; y++ ) { for ( int x = 0 ; x < originalBitmap. Width; x++ ) { Color originalColor = originalBitmap. GetPixel ( x, y) ; int mirroredX = originalBitmap. Width - 1 - x; mirroredBitmap. SetPixel ( mirroredX, y, originalColor) ; } } return mirroredBitmap; }