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

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, int angle, 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:\123\新建文本文件.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();
  }
 }
}

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

(0)

相关推荐

  • 基于jQuery Circlr插件实现产品图片360度旋转

    Circlr是一款可以对产品图片进行360度全方位旋转展示的jQuery插件.Circlr通过按一定角度规律拍摄的产品图片,制作出可以使用鼠标拖动.鼠标滚轮和移动触摸来进行图片逐帧旋转的效果.比先前的Rollerblade,动画顺畅了许多,也更易于控制,该插件非常适合于商品的展示. 它的特点有: 支持水平或垂直方向旋转. 支持移动触摸事件. 支持滚动事件. 图片预加载处理. 可以反向和循环旋转图片. jQ酷实例教程:jQuery产品图片360度旋转Circlr 引入核心文件 <script sr

  • jQuery实现的产品自动360度旋转展示特效源码分享

    这是一款基于jQuery实现的产品自动360度旋转展示特效代码,可以对产品进行360度旋转展示,更好的让顾客了解产品的全部外观细节. jQuery产品360度旋转展示代码,支持预加载,能够快速全面的的预览产品的图片,主要原理是利用多张图片按顺序播放实现,本段代码兼容目前最新的各类主流浏览器,是一款非常优秀的特效源码. 运行效果图:---------------------------------效果查看 源码下载----------------------------------- 为大家分享的

  • 基于Three.js插件制作360度全景图

    这是个基于three.js的插件,预览地址:戳这里 使用方法: 1.这个插件的用法很简单,引入如下2个js <script src="js/three.min.js"></script> <script src="js/photo-sphere-viewer.min.js"></script> 2.初始化一下,(具体各种参数配置根据情况而定) var PSV = new PhotoSphereViewer({ // 全

  • javascript制作幻灯片(360度全景图片)

    在给客户做产品演示时经常会用到幻灯片,拥有360度的全景图片效果给用户带来好的体验价值.在这里给大家介绍一款来自Robert Pataki的360全景幻灯实现教程,此款教程使用js来实现一个超酷的全景幻灯,具体内容如下: 在这个教程中没有使用到任何插件,我们将使用HTML,css和javascript来实现,当然,也使用是jQuery这个框架! 如何实现? 我们将使用预先按照360生成的图片进行轮播来实现动画展示效果.包含了180个图片.所以加载时间可能比较长. 代码实现 我们将在css代码中添

  • JavaScript控制图片360度旋转代码

    JavaScript控制图片360度旋转代码 var isIE = (document.uniqueID)?1:0; var i=1; function rotate(image) { var object = image.parentNode; if(isIE){ image.style.filter="progid:dXImagetransform.Microsoft.basicImage(rotation="+i+")"; i++; if(i>4) {i

  • javascript如何实现360度全景照片问题汇总

    本文为大家分享了做360度的全景照片的详细步骤,其中要注意以下几个问题: 1.如何在拖图片时,使其加载变快?---注意让图片隐藏的性能比让图片切换的性能高,且在IE9下运行,会出现图片加载的问题 2.如何使图片带有一定的速度转 3.考虑如果x为负数和负数两种情况 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xht

  • js实现按钮控制图片360度翻转特效的方法

    本文实例讲述了js实现按钮控制图片360度翻转特效的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <html> <title>js实现按钮控制图片360度翻转特效</title> <body> <script language="javascript"> var isIE = (document.uniqueID)?1:0; var i=1; function rotate(image) { var o

  • Android开发VR实战之播放360度全景视频

    VR即Virtual Reality虚拟现实.虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统它利用计算机生成一种模拟环境是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中. 那么,如何在Android中去开发VR功能的APP呢?我们利用谷歌提供的开源SDK去实现一个360°全景视频的功能 一.在build.gradle中引入谷歌VR的SDK依赖 compile 'com.google.vr:sdk-videowidget:1.10.0' 二.注意支持的最小

  • JS实现全景图效果360度旋转

    var scrl,direction="right"; var x,xold,xdiff, i=1; function change(start){ if(direction == "right"){ if(div1.scrollTop+190 0){ div1.scrollTop -= 190; } else{ div1.scrollTop = div1.scrollHeight; } } if(start) scrl = setTimeout("cha

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

    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="

  • iOS优雅的将CALayer旋转360度示例代码

    什么是CALayer * 在iOS系统中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView. * 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个层. * 在创建UIView对象时,UIView内部会自动创建一个层(即CALayer对象),通过UIView的layer属性可以访问这个层.当UIView需要显示到屏幕上时,会调用 drawRect:方法进行绘图,并且会将所有内容绘制在自己的层上,绘图完毕后,系统

  • 微信小程序实现点击图片旋转180度并且弹出下拉列表

    本文为大家分享了微信小程序实现图片旋转.下拉列表的具体代码,供大家参考,具体内容如下 正文: 先上效果图: index.wxml <view class="phone_one" bindtap="clickPerson"> <view class="phone_personal">{{firstPerson}}</view> <image src="../../image/v6.png"

  • 图片旋转、鼠标滚轮缩放、镜像、切换图片js代码

    本文实例为大家展示了图片旋转.鼠标滚轮缩放.镜像.切换图片多重效果,提供了详细的代码,分享给大家供大家参考,具体内容如下 具体代码: <!DOCTYPE html> <html lang="zh-cn"> <head> <title>图片旋转,鼠标滚轮缩放,镜像,切换图片</title> <meta charset="utf-8" /> <!--<script type="

  • 让图片旋转任意角度及JQuery插件使用介绍

    引入下方的jquery.rotate.js文件,然后通过$("选择器").rotate(角度);可以旋转任意角度, 例如$("#rotate-image").rotate(45);把这句放在$(document).ready(function(){ });中 就是将id为rotate-image的图片旋转45度. 不过,貌似在Chrome中总是不显示. 唉,找了两个小时,才发现Chrome太坑爹了,没法获取图片的长宽. 解决办法是,把$("#rotate-

  • 13 款最热门的 jQuery 图像 360 度旋转插件推荐

    在 web 页面上使用 jQuery 图像 360 度旋转插件是最美也是最方便的显示图像的方式.这些超级棒的 360° 图像选择插件允许用户更详细的分析产品或者文章.jQuery 图像旋转插件可以让用户从各种角度进行 360 度的图像展示,经常在电子商务网站上使用,帮助消费者更好的了解产品,从任意的一个角度观察欣赏. 在这篇文章中,我们收集了 13 款最佳的 jQuery 图像 360 度旋转插件,这些插件都能进行 360 度图像旋转展示.希望大家能从中找到自己喜欢的,并应用在自己的网站上. 1

  • JS解决IOS中拍照图片预览旋转90度BUG的问题

    上篇文章[Js利用Canvas实现图片压缩功能]中做了图片压缩上传,但是在IOS真机测试的时候,发现图片预览的时候自动逆时针旋转了90度.对于这个bug,我完全不知道问题出在哪里,接下来就是面向百度编程了.通过度娘找到了相关资料,解决方法记录在此.这个问题的具体因素其实我还是不清楚是为何导致的,只有IOS和部分三星手机会出现此bug. 绝大部分的安卓机并无此问题. 解决此问题需要引入一个第三方 JS 库: exif.js 下载地址:https://github.com/exif-js/exif-

随机推荐