利用C#代码实现图片旋转360度

利用C#代码实现图片旋转360度,第1张

概述usingSystem;usingSystem.Collections.Generic;usingSystem.Drawing;usingSystem.IO;usingSystem.Linq;usingSystem.Text;
using System;using System.Collections.Generic;using System.Drawing;using System.IO;using System.linq;using System.Text;namespace 图片旋转程序{ public class ImageHelper {  /// <summary>   /// 以逆时针为方向对图像进行旋转   /// </summary>   /// <param name="b">位图流</param>   /// <param name="angle">旋转角度[0,360](前台给的)</param>   /// <returns></returns>   public Image Rotateimg(Image b,int angle,string file)  {   angle = angle % 360;   //弧度转换    double radian = angle * Math.PI / 180.0;   double cos = Math.Cos(radian);   double sin = Math.Sin(radian);   //原图的宽和高    int w = b.WIDth;   int h = b.Height;   int W = (int)(Math.Max(Math.Abs(w * cos - h * sin),Math.Abs(w * cos + h * sin)));   int H = (int)(Math.Max(Math.Abs(w * sin - h * cos),Math.Abs(w * sin + h * cos)));   //目标位图    Bitmap dsImage = new Bitmap(W,H);   system.drawing.graphics g = system.drawing.graphics.FromImage(dsImage);   g.InterpolationMode = System.Drawing.drawing2d.InterpolationMode.Bilinear;   g.SmoothingMode = System.Drawing.drawing2d.SmoothingMode.HighQuality;   //计算偏移量    Point Offset = new Point((W - w) / 2,(H - h) / 2);   //构造图像显示区域:让图像的中心与窗口的中心点一致    Rectangle rect = new Rectangle(Offset.X,Offset.Y,w,h);   Point center = new Point(rect.X + rect.WIDth / 2,rect.Y + rect.Height / 2);   g.Translatetransform(center.X,center.Y);   g.Rotatetransform(angle);   //恢复图像在水平和垂直方向的平移    g.Translatetransform(-center.X,-center.Y);   g.DrawImage(b,rect);   //重至绘图的所有变换    g.resettransform();   g.Save();   g.dispose();   //保存旋转后的图片    dsImage.Save(@"D:\img\" + Path.GetfilenameWithoutExtension(file) + "\" + angle + ".png",System.Drawing.Imaging.ImageFormat.Png);   return dsImage;  }  public Image Rotateimg(string filename,string file)  {   return Rotateimg(GetSourceimg(filename),angle,file);  }  public Image GetSourceimg(string filename)  {   Image img;   img = Bitmap.Fromfile(filename);   return img;  }  } class Program {  static voID Main(string[] args)  {   string[] strArr = Directory.Getfiles(@"D:\img");   foreach (string file in strArr)   {    Console.Writeline(file);   //输出E:3\新建文本文件.txt    Console.Writeline(Path.GetfilenameWithoutExtension(file));    //如果要保存的目录不存在,则先创建    if (!Directory.Exists(@"D:\img\" + Path.GetfilenameWithoutExtension(file)))    {     Directory.CreateDirectory(@"D:\img\" + Path.GetfilenameWithoutExtension(file));    }    fileStream fs = new fileStream(file,fileMode.Open,fileAccess.Read);    Image img = Bitmap.FromStream(fs);    ImageHelper IH = new ImageHelper();    for (int i = 1; i <= 360; i++)    {     IH.Rotateimg(img,i,file);    }    fs.Close();   }   Console.ReadKey();  } }}

以上所述是本文的全部内容,有问题的可以和小编联系,谢谢对编程小技巧的支持!

总结

以上是内存溢出为你收集整理的利用C#代码实现图片旋转360度全部内容,希望文章能够帮你解决利用C#代码实现图片旋转360度所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1256998.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存