.net 图片操作

2024-04-29 05:12
文章标签 net 图片 操作

本文主要是介绍.net 图片操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图片操作 bitmap 旋转 bitmap左右镜像

/// <summary>/// bitmap角度旋转/// </summary>/// <param name="image"></param>/// <param name="angle"></param>/// <returns></returns>public static Bitmap RotateImage(Bitmap image, int angle){try{// 创建一个新的Bitmap对象,宽度和高度互换Bitmap rotatedImage = new Bitmap(image.Height, image.Width);// 创建一个Graphics对象,并设置其绘制原点为新图像的中心点using (Graphics g = Graphics.FromImage(rotatedImage)){g.TranslateTransform(rotatedImage.Width / 2, rotatedImage.Height / 2);// 设置旋转角度为90度g.RotateTransform(angle);// 将原图像绘制到新图像上g.DrawImage(image, -image.Width / 2, -image.Height / 2, image.Width, image.Height);return rotatedImage;}}catch (AccessViolationException ave){return null;}}/// <summary>///  bitmap角度旋转/// </summary>/// <param name="originalImage"></param>/// <param name="angle"></param>/// <returns></returns>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,大小足够容纳旋转后的图像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;// 计算旋转后的位置,以便将原始图像绘制到新的Bitmap中心Point center = new Point(newWidth / 2, newHeight / 2);g.TranslateTransform(center.X, center.Y);g.RotateTransform(angle);g.TranslateTransform(-center.X, -center.Y);// 在新的Bitmap上绘制旋转后的图像g.DrawImage(originalImage, new Point((newWidth - width) / 2, (newHeight - height) / 2));}return rotatedImage;}/// <summary>/// 图像镜像转换/// </summary>/// <param name="originalBitmap"></param>/// <returns></returns>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,大小与原始相同Bitmap mirroredBitmap = new Bitmap(originalBitmap.Width, originalBitmap.Height);// 循环遍历原始Bitmap的像素for (int y = 0; y < originalBitmap.Height; y++){for (int x = 0; x < originalBitmap.Width; x++){// 获取原始Bitmap中的像素颜色Color originalColor = originalBitmap.GetPixel(x, y);// 计算水平翻转后的x坐标int mirroredX = originalBitmap.Width - 1 - x;// 在新Bitmap上设置镜像像素mirroredBitmap.SetPixel(mirroredX, y, originalColor);}}return mirroredBitmap;}

这篇关于.net 图片操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945189

相关文章

最新Linux Debian12安装和使用ImageMagick图像处理工具 常见图片png、jpg格式转webp格式

在Linux系统中,使用ImageMagick可以图片格式转换,其中最常用的是通过命令行工具进行。 ImageMagick是一个非常强大的图像处理工具集,它包含了许多用于图像转换的命令。 一、安装ImageMagick(如果尚未安装): sudo apt-get install imagemagick # 对于基于Debian的系统 验证是否安装成功: 尝试运行ImageMagick提

创意无限!AI一键生成漫画视频,每天轻松收入300+,粘贴复制简单操作!

AI项目算是2023到2024一直都非常火爆的项目,这次的AI漫画项目也是相当暴利的项目了,我知道一个老铁通过AI漫画半年已经获利100W了,真的是相当暴利了。 不再多说,直接上手拆解项目。 项目获取: https://zzmbk.com/https://zzmbk.com/

linux下的定时或计时操作(gettimeofday等的用法,秒,微妙,纳秒)(转载)

1、用gettimeofday()可获得微妙级(0.000001秒)的系统时间,调用两次gettimeofday(),前后做减法,从而达到定时或者计算时间的目的。 原型:int gettimeofday(struct timeval *tv,struct timezone *tz),会把目前的时间tv所指的结构返回,当地时区的信息则放到tz所指的结构中。这两个结构都放在/usr/inclu

图片帧播放性能优化及音频播放路径

/**  *  图片帧播放  */ -(void)animationWithTomImageName:(NSString *)imageName andWithCount:(int)count {     if ([self.tomImage isAnimating]) {         return;//如果有动画在执行其他动画就不能执行     }     NSMutable

贪心 -力扣860.柠檬水找零力扣2208.将数组和减半的最少操作次数力扣179.最大数力扣376.摆动序列

目录 力扣860.柠檬水找零 力扣2208.将数组和减半的最少操作次数 力扣179.最大数 力扣376.摆动序列 贪心策略,局部最优->全局最优 1.把解决问题的过程分为若干步骤 2.解决每一步的时候,都选择当前看起来“最优秀的”解法 3.希望能够得到全局最优解 例子1:找零问题 50-4=46  ->[20,10,5,1] 46->26->6->5->1   找当前能够

03. Compose 可组合组件之Card 图片

01. Compose 可组合组件之Row And Column 02. Compose 可组合组件之 属性 modifier 03. Compose 可组合组件之Card 图片 class ImageCardActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.on

如何在控制台应用程序里面托管ASP.NET Core网站

目录 介绍运行效果开发环境项目结构第三方库引用编写代码 介绍 本文如何不通过IIS,使用控制台程序作为宿主主机来运行我们的asp.net core开发的网站程序。通过改案例你也可以后期通过winform或者wpf作为宿主来运行我们的asp.net core开发的网站。 运行效果 开发环境 vs2022+.NET6 项目结构 第三方库引用

从网络得到图片数据保存到手机中,

之前我是想把图片以blob的形式全部存数据库的,试了好几种方法都不行,暂时先存文件了,主要是sql语句不支持数组形式存 从网络中下载图片放到手机中,urlpath图片的网络地址, 这个方法是得到图片的二进制数据 public byte[] getImage(String urlpath) throws Exception { URL url = new URL(urlpath); Http

Android之绚丽的图片游览效果--有点像W7效果,透明的倒影,层叠的图片,渐变的颜色透明度

转自http://blog.csdn.net/kkfdsa132/article/details/6408052 这里转载一个牛人的博客:http://www.cnblogs.com/tankaixiong/archive/2011/02/24/1964340.html           下面,是我参照他的博客实现的一个效果图。这个程序,在他的基础上进行了一些改良,但改良得不是很好,嘻嘻,

同域jQuery(跨)iframe操作DOM

frame目前还是比较流行的,许多地方都通过它来实现特殊的情况。比如说传统的上传、select在ie6下、代理、跨域等等。今天呢,简要的记述一下跨iframe的相关操作,主要是用jQuery操作DOM结构方面。   [javascript]  view plain copy <iframe src="a.php" id="aa"></iframe>    <iframe s