Canvas旋转图片--保持大小不变的算法



function drawImg(angle)

{

canvas.width = canvas.width;

var distance = size / 2 * Math.sqrt(2) * Math.sin(angle * Math.PI / 180 / 2) * 2;

var degree = 180 - 45 - (180 - angle) / 2;

var x = distance * Math.sin(degree * Math.PI / 180);

var y = distance * Math.cos(degree * Math.PI / 180);

ctx.translate(x, -y);

var angleInRadians = angle * Math.PI / 180;

ctx.rotate(angleInRadians);

ctx.drawImage(img, 0, 0, 32, 32);

ctx.restore();

}

第一步是清空画板,重点是找到旋转后图片相对原正方形的中心点,公式是我自己写的,就是计算distnace那个。

时间: 2024-11-09 10:26:42

Canvas旋转图片--保持大小不变的算法的相关文章

Camera图片特效处理综述(Bitmap的Pixels处理、Canvas/paint的drawBitmap处理、旋转图片、裁截图片、播放幻灯片浏览图片<线程固定时间显示一张>)

一种是直接对Bitmap的像素进行操作,如:叠加.边框.怀旧.(高斯)模糊.锐化(拉普拉斯变换). Bitmap.getPixels(srcPixels, 0, width, 0, 0, width, height); newR = (int) (pixR * alpha + layR * (1 - alpha));    newR = Math.min(255, Math.max(0, newR));    ...    srcPixels[pos] = Color.argb(newA, ne

赵雅智_运用Bitmap和Canvas实现图片显示,缩小,旋转,水印

上一篇已经介绍了Android种Bitmap和Canvas的使用,下面我们来写一个具体实例 http://blog.csdn.net/zhaoyazhi2129/article/details/32136179 运行效果: 主要代码 package com.example.guaguale; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import and

【canvas】 使用canvas压缩图片大小

------------恢复内容开始------------ 由于各种大大小小的原因,自己最近经历了一些面试,其中有一个面试题是这样的,使用canvas怎样压缩图片大小 这道题给我问蒙了,因为我没用过canvas压缩图片 回去查资料,发现手机端在上传图片的时候,调起相机拍照的时候超过2m了,所以用到canvas压缩,优化用户体验 解决方法: 1. 将图片的file文件转成baseURL 2. 创建一个image表情去接受文件获取图片的宽高和比例. 3. 创建canvas画布设置画布的大小. 4.

图片各种旋转、改变大小

1.各种旋转.改变大小 注意:先要添加画图相关的 using 引用. // 向右旋转图像 90 °代码如下 : private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { Graphics g = e.Graphics; Bitmap bmp = new Bitmap("rama.jpg");// 加载图像 g.FillRectangle(Brushes.White, this.Cli

C# (GDI+相关) 图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果)

原文:C# (GDI+相关) 图像处理(各种旋转.改变大小.柔化.锐化.雾化.底片.浮雕.黑白.滤镜效果) C#图像处理   (各种旋转.改变大小.柔化.锐化.雾化.底片.浮雕.黑白.滤镜效果)     一.各种旋转.改变大小   注意:先要添加画图相关的using引用.   //向右旋转图像90°代码如下: private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) {   Graphics g

C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果)

C#图像处理(各种旋转.改变大小.柔化.锐化.雾化.底片.浮雕.黑白.滤镜效果) 标签: c#图像处理gdi 2014-08-14 09:09 441人阅读 评论(0) 收藏 举报 本文章已收录于: .NET知识库 分类: C#(78) 作者同类文章X 一.各种旋转.改变大小 注意:先要添加画图相关的using引用. [csharp] view plain copy print? //向右旋转图像90°代码如下: private void Form1_Paint(object sender, S

转 C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果)

C#图像处理 (各种旋转.改变大小.柔化.锐化.雾化.底片.浮雕.黑白.滤镜效果) 一.各种旋转.改变大小 注意:先要添加画图相关的using引用. //向右旋转图像90°代码如下: private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { Graphics g = e.Graphics; Bitmap bmp = new Bitmap("rama.jpg");//加载图像 g.Fi

HTML5 file API加canvas实现图片前端JS压缩并上传 (转载)

一.图片上传前端压缩的现实意义 对于大尺寸图片的上传,在前端进行压缩除了省流量外,最大的意义是极大的提高了用户体验. 这种体验包括两方面: 由于上传图片尺寸比较小,因此上传速度会比较快,交互会更加流畅,同时大大降低了网络异常导致上传失败风险. 最最重要的体验改进点:省略了图片的再加工成本.很多网站的图片上传功能都会对图片的大小进行限制,尤其是头像上传,限制5M或者2M以内是非常常见的.然后现在的数码设备拍摄功能都非常出众,一张原始图片超过2M几乎是标配,此时如果用户想把手机或相机中的某个得意图片

黄聪:C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果) (转)

一.各种旋转.改变大小 注意:先要添加画图相关的using引用. //向右旋转图像90°代码如下:private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e){ Graphics g = e.Graphics;Bitmap bmp = new Bitmap("rama.jpg");//加载图像g.FillRectangle(Brushes.White, this.ClientRectangl