精华内容
下载资源
问答
  • 分享一款由JS实现的超平滑的水平和垂直图片轮播特效代码,就是大家熟悉的幻灯片特效、焦点图特效等,animateType参数中设置,目前支持default, rotate, flip 和 depth, 点击按钮看效果,一共包括了4种轮播效果,不...
  • 水平浅,代码不规整的地方,望轻喷。 部分未解决问题(其他角度拍照无法翻转) 1.手机必须支持重力感应,不然Orientation值是不变的; 2.有部分手机(R11),拍照不含有Orientation值; node安装 exif-js npm ...

    公司项目中总结的一点经验,给有遇到类似问题的小伙伴提供一下思路。水平浅,代码不规整的地方,望轻喷。
    部分未解决问题(其他角度拍照无法翻转)
    1.手机必须支持重力感应,不然Orientation值是不变的;
    2.有部分手机(R11),拍照不含有Orientation值;

    node安装 exif-js

    npm install exif-js -S
    

    默认浏览器不会对带 EXIF 信息的图片进行回正,之前确实不会。但是自从 iOS 更新到 13.4.1 后,浏览器支持自动回正了。
    ####增加判断浏览器是否支持带EXIF的图片自动回正
    文件名 IsAutoRotateImg.js

    // 判断浏览器是否支持对图片进行回正操作
    // 一张 2x1 的 JPEG 图片, EXIF Orientation: 6
    const testAutoOrientationImageURL =
    	'data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAA' +
    	'AAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA' +
    	'QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE' +
    	'BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/x' +
    	'ABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAA' +
    	'AAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q==';
    let isImageAutomaticRotation;
    
    export function detectImageAutomaticRotation() {
    	return new Promise((resolve) => {
    		if (isImageAutomaticRotation === undefined) {
    			const img = new Image();
    
    			img.onload = () => {
    				// 如果图片变成 1x2,说明浏览器对图片进行了回正
    				isImageAutomaticRotation = img.width === 1 && img.height === 2;
    				resolve(isImageAutomaticRotation);
    			};
    			img.src = testAutoOrientationImageURL;
    		} else {
    			// console.log('isImageAutomaticRotation === undefined');
    			resolve(isImageAutomaticRotation);
    		}
    	});
    }
    
    

    处理图片旋转,获取图片的Orientation,根据Orientation的值去旋转图片

    import { EXIF } from "exif-js"
    //引入判断浏览器是否支持带EXIF的图片自动回正
    import { detectImageAutomaticRotation } from "@/common/IsAutoRotateImg.js"
    //imgFile 为 文件类型
    const _rotateImg = (imgFile) => {
    	console.log(imgFile);
    	return new Promise((resolve, reject) => {
    		EXIF.getData(imgFile, function() {
    			console.log('进入getdata')
    			let exifTags = EXIF.getAllTags(this);
    			let reader = new FileReader();
    			reader.readAsDataURL(imgFile);
    			reader.onload = e => {
    				let imgData = e.target.result;
    				// 判断浏览器是否支持对图片进行回正操作
    				detectImageAutomaticRotation().then(res => {
    					//res为true时。浏览器支持对带 EXIF 信息的图片进行自动回正
    					if (res) {
    						return resolve(imgData)
    					}
    					//res为false时。执行js,对带 EXIF 信息的图片进行回正
    					// 8 表示 顺时针转了90
    					// 3 表示 转了 180
    					// 6 表示 逆时针转了90
    					if (
    						exifTags.Orientation == 8 ||
    						exifTags.Orientation == 3 ||
    						exifTags.Orientation == 6
    					) {
    						//翻转
    						//获取原始图片大小
    						const img = new Image();
    						img.src = imgData;
    						img.onload = function() {
    							let cvs = document.createElement('canvas');
    							let ctx = cvs.getContext('2d');
    							//如果旋转90
    							if (
    								exifTags.Orientation == 8 ||
    								exifTags.Orientation == 6
    							) {
    								cvs.width = img.height;
    								cvs.height = img.width;
    							} else {
    								cvs.width = img.width;
    								cvs.height = img.height;
    							}
    							if (exifTags.Orientation == 6) {
    								//原图逆时针转了90, 所以要顺时针旋转90
    								ctx.rotate(Math.PI / 180 * 90);
    								ctx.drawImage(
    									img,
    									0,
    									0,
    									img.width,
    									img.height,
    									0,
    									-img.height,
    									img.width,
    									img.height
    								);
    							}
    							if (exifTags.Orientation == 3) {
    								//原图逆时针转了180, 所以顺时针旋转180
    								ctx.rotate(Math.PI / 180 * 180);
    								ctx.drawImage(
    									img,
    									0,
    									0,
    									img.width,
    									img.height,
    									-img.width,
    									-img.height,
    									img.width,
    									img.height
    								);
    							}
    							if (exifTags.Orientation == 8) {
    								//原图顺时针旋转了90, 所以要你时针旋转90
    								ctx.rotate(Math.PI / 180 * -90);
    								ctx.drawImage(
    									img,
    									0,
    									0,
    									img.width,
    									img.height,
    									-img.width,
    									0,
    									img.width,
    									img.height
    								);
    							}
    							resolve(cvs.toDataURL('image/jpeg'));
    						}
    					} else {
    						resolve(imgData);
    					}
    				})
    			}
    		});
    	});
    }
    export default _rotateImg
    

    参考资料:http://www.zyiz.net/tech/detail-135910.html
    https://www.cnblogs.com/jrg-Archer/p/11659910.html

    展开全文
  • Viewer.js 有以下特点:支持移动设备触摸事件支持响应式支持放大/缩小支持旋转(类似微博的图片旋转)支持水平/垂直翻转支持图片移动支持键盘支持全屏幻灯片模式(可做屏保)支持缩略图支持标题显示支持多种自定义事件...

    Viewer.js 有以下特点:

    支持移动设备触摸事件

    支持响应式

    支持放大/缩小

    支持旋转(类似微博的图片旋转)

    支持水平/垂直翻转

    支持图片移动

    支持键盘

    支持全屏幻灯片模式(可做屏保)

    支持缩略图

    支持标题显示

    支持多种自定义事件

    Viewer.js 提供了纯 JS 版本和 jQuery 版本,版本名字虽然一样,但代码不一样,不能通用。

    使用方法

    引入文件Javascript版:

    jQuery版:

    Html结构

    JavaScriptJavascript版:

    var viewer = new Viewer(document.getElementById('viewer'));

    jQuery 版:

    $('#viewer').viewer();

    配置

    名称

    类型

    默认值

    说明

    inline

    布尔值

    false

    启用 inline 模式

    button

    布尔值

    true

    显示右上角关闭按钮(jQuery 版本无效)

    navbar

    布尔值/整型

    true

    显示缩略图导航

    title

    布尔值/整型

    true

    显示当前图片的标题(现实 alt 属性及图片尺寸)

    toolbar

    布尔值/整型

    true

    显示工具栏

    tooltip

    布尔值

    true

    显示缩放百分比

    movable

    布尔值

    true

    图片是否可移动

    zoomable

    布尔值

    true

    图片是否可缩放

    rotatable

    布尔值

    true

    图片是否可旋转

    scalable

    布尔值

    true

    图片是否可翻转

    transition

    布尔值

    true

    使用 CSS3 过度

    fullscreen

    布尔值

    true

    播放时是否全屏

    keyboard

    布尔值

    true

    是否支持键盘

    interval

    整型

    5000

    播放间隔,单位为毫秒

    zoomRatio

    浮点型

    0.1

    鼠标滚动时的缩放比例

    minZoomRatio

    浮点型

    0.01

    最小缩放比例

    maxZoomRatio

    数字

    100

    最大缩放比例

    zIndex

    数字

    2015

    设置图片查看器 modal 模式时的 z-index

    zIndexInline

    数字

    0

    设置图片查看器 inline 模式时的 z-index

    url

    字符串/函数

    src

    设置大图片的 url

    build

    函数

    null

    回调函数,具体查看演示

    built

    函数

    null

    回调函数,具体查看演示

    show

    函数

    null

    回调函数,具体查看演示

    shown

    函数

    null

    回调函数,具体查看演示

    hide

    函数

    null

    回调函数,具体查看演示

    hidden

    函数

    null

    回调函数,具体查看演示

    view

    函数

    null

    回调函数,具体查看演示

    viewed

    函数

    null

    回调函数,具体查看演示

    展开全文
  • 原因是解决*.9.png的水平翻转问题搞得我太辛苦了,所以将其收为私有技术,不发布在开源代码里面了。(高手勿笑,或许在你们眼里这只是一个很简单的问题) 2000人的大群群聊时,群成员昵称可能显示不了,因为获取群...
  • 本文为原创,转载请注明出处:cnzt 文章:cnzt-p...问题:苹果机竖着拍个照片,上传到server,再在安卓手机打开,发现图片翻转了呵呵哒…… 原因:苹果手机默认的方向是水平且home键向右的方向,所有竖着拍照相当于...

     

    本文为原创,转载请注明出处: cnzt       文章:cnzt-p

    http://www.cnblogs.com/zt-blog/p/6895352.html 

     

    本文主要说下iOS上传的照片在安卓机上翻转的问题。

    问题:苹果机竖着拍个照片,上传到server,再在安卓手机打开,发现图片翻转了呵呵哒……

    原因:苹果手机默认的方向是水平且home键向右的方向,所有竖着拍照相当于顺时针转了90度,恩。所以到安卓手机上翻了90度。

    解决方法:

    1. 前端js解决

      利用canvas和exif.js(用于读取图片的exit信息,如orientation)达到目的。

      思路:

      html --  input(type=file)输入框,用于上传图片的

      js -- 用FileReader读取file文件,将结果用于新建一个图片Image的src,图片加载完成后创建一个canvas,根据图片大小设置canvas的宽高,将图片画到canvas画布上。用exif.js读取图片的orientation相机的方向信息(1-8),根据方向决定canvas画布需要转多少度,最后将旋转后的canvas转化成dataurl赋值给dom预览。

      orientation参考这里

     

      弊端:这样只能改变本地预览的图片方向,如果是直接向server发送file文件作为request data,则此方法不能达到目的。

     

    2. server端解决

      server端拿到图片后处理orientation,这可以从根本上解决问题。

    转载于:https://www.cnblogs.com/zt-blog/p/6895352.html

    展开全文
  • Android绘图板源代码

    热门讨论 2013-06-11 19:41:42
    4.贴图144张,可以放大、缩小、平移、旋转,可以锁定、Bring to front、水平翻转、绘制到画布和删除 5.拍照和从手机存储里选择两种方式添加背景图片和贴图 6.文字添加功能还没做出来,undo和redo只能两步 相册管理 ...
  • 因为我个人习惯先画朝向右侧的左耳,所以先将图像翻转过来,点击编辑→变换→水平翻转。 顺便在此向大家推荐一下:美术集网校(在线授课,电脑、手机APP全部都可以登录学习),主打素描、速写、色彩、手绘动漫、...

    如何画动漫人物的耳朵?动漫人物耳朵的画法,教程比较详细,但要画的好,还是需要绘画基础,作者从参考到构图,最后出线稿和上色都讲解了一下,最后做一下光源细化细节即可。

    最终效果

    一、勾勒耳部草图

    1、首先,找一张清晰明了的耳部图片作为参考。因为我个人习惯先画朝向右侧的左耳,所以先将图像翻转过来,点击编辑→变换→水平翻转。

    顺便在此向大家推荐一下:美术集网校(在线授课,电脑、手机APP全部都可以登录学习),主打素描、速写、色彩、手绘动漫、手绘漫画、手绘基础、传统美术等,是一个在国内非常火的绘画学习软件或平台。

    2、选用硬质圆头笔刷绘制草图。你们可以按照自己的喜好,形状画得更为简单些,但要尽量符合正常的人耳特征。

    3、将耳朵的结构拆解成多个小“C”状,这样可以绘制得更为逼真贴切。草图终稿如下。

    二、上底色

    新建一个图层,用棕褐色硬质圆头笔刷涂上一层底色,硬度设置为100%,接着,调整该图层的混合模式为柔光,再将其设置为剪切蒙版(快捷键Ctrl+Alt+G)。

    三、绘制阴影

    1、不要手动取色。新建一个图层,图层混合样式设置为正片叠底。用吸管工具(快捷键I)选中画布上已用的棕褐色,这时,前景色会自动变成你取的颜色。

    接着,选用柔软的圆头笔刷,绘制耳朵内外侧的阴影,因为与原来的颜色正片叠底,从而会呈现完美的阴影特效。

    2、用吸管工具吸取刚刚绘制的阴影色,用这个颜色继续描绘更为深一点的阴影。

    四、绘制逼真肌肤色

    画到这儿,感觉很不妙,颜色跟原图相差甚远,很暗淡。原因何在呢?为了解决这个问题,我们再新建一个图层,图层混合模式设置为叠加,接着用同样的自然肌肤色绘制,提亮整体的色调。这样看起来是不是好很多!

    五、绘制高光部分

    让画面有写实感的一个最简单的妙招就是给图片绘制高光。和之前步骤一样,新建一个图层,设置为叠加样式,这次,用白色来绘制耳朵上的高亮部分。

    注意参考样图,在耳朵的骨头关节部分,光的变化以及整体的光照设定。要让你绘制的耳朵上,各种细节反射的光,好像正照向你一般栩栩如生。

    要确保,整体的光源是从左上方的角落照射而来。

    六、绘制逼真的皮肤纹理

    1、画皮肤的纹理其实很简单。从画笔预设中选择粉笔材质的笔刷,如果你喜欢尝试各种新式笔刷,我推荐这款颗粒质感笔刷Grunge set。

    2、选好画笔后,就尽情绘制吧,用暗褐色涂抹耳朵,用橡皮擦工具(E)反复调整细节。

    3、接着,再新建一个图层,同样设置样式为叠加,然后根据人体血色分布状况,继续用更暖的色系在耳朵上绘制纹理。

    4、最后,再建第三层肤质图层,这时选用白色绘制,这代表高光部分。

    七、细节处理

    1、画到这里,接近尾声,我们需要来点背景色。选中背景图层,右击,混合选项,选中渐变叠加,渐变设置为深灰色到浅灰色,其他设置如下:

    混合模式:正常

    样式:径向

    不透明度:100%

    角度:90度,缩放:100%。

    一个新的背景就绘制完成了。

    2、继续优化你的图片,用软质圆头画笔,进行肤色调整,再用100%硬度的硬质圆头画笔,调整边界,注意下笔精准有力。

    3、调整过程中,不要怕去掉耳部的一些多余部分,为了让耳朵更为立体,可以在耳朵的下面一层,来一笔灰色的阴影。

    4、阴影的位置也要注意和整体光源位置协调,避免出现光线错乱感。

    画到这,耳朵显得略微僵硬,你可以用软质的圆头画笔来对肌肤质感进行调整。

    为了达到更为逼真的效果,也可以参照照片中的耳朵,来点耳毛,用细小的白色画笔临摹细节,这一步好了,整个画面就相当栩栩如生啦。

    最终效果:

    学画画,本就不是一件轻松的事情,所以大家要努力坚持,努力的去克服各种困难!加油吧~!赠人玫瑰手有余香,祝您好运一生一世,如果你觉得有用,请点赞转发,谢谢^_^!

    展开全文
  • 一、J Query实例大全 1)AjaxJavaScript资源 1.JS+CSS仿腾讯QQ首页搜索框无刷新换肤效果代码 2.js+css简单后台二级树形菜单demo示例 3.JS+CSS美化经典Select选项...下载jQuery动感广告图片翻转插件(PictureRoll)...
  • 兼容各浏览器JS+CSS水平和垂直无缝图片滚动效果代码 12.漂亮暖色调js+flash平滑过渡大屏图片切换的广告代码 13.实用国外JS内容选项卡DEMO下载 14.推荐通用文字图片JS不间断滚动封装类 代替Marquee 15.站长...
  • QQ(Android)v1.0

    2015-01-22 17:50:45
    原因是解决*.9.png的水平翻转问题搞得我太辛苦了,所以将其收为私有技术,不发布在开源代码里面了。(高手勿笑,或许在你们眼里这只是一个很简单的问题) 2000人的大群群聊时,群成员昵称可能显示不了,因为获取群信息...
  • 11. 兼容各浏览器JS+CSS水平和垂直无缝图片滚动效果代码 12. 漂亮暖色调js+flash平滑过渡大屏图片切换的广告代码 13. 实用国外JS内容选项卡DEMO下载 14. 推荐通用文字图片JS不间断滚动封装类 代替Marquee 15. 站长...
  • 11. 兼容各浏览器JS+CSS水平和垂直无缝图片滚动效果代码 12. 漂亮暖色调js+flash平滑过渡大屏图片切换的广告代码 13. 实用国外JS内容选项卡DEMO下载 14. 推荐通用文字图片JS不间断滚动封装类 代替Marquee 15. 站长...
  • 确然转码大师是一款...1.添加视频垂直翻转、水平翻转、顺时针旋转90度、逆时针旋转90度; 2.修正了多段视频合并出现的问题; 3.修正了反复打开输出文件夹的问题; 4.“转码时预览视频”默认为不选中,提升转码速度;
  •  拍好的照片可以根据您的需求进行图像编辑:照片底色、黑白处理、颜色翻转、怀旧效果、曝光效果、浮雕、柔化、锐化、水平镜像、垂直镜像、亮度调整、对比度调整、旋转180度、色调调整、波浪效果、褪色效果、图像...
  • 实例212 验证手机号码是否正确 实例213 验证字符串是否为汉字 实例214 验证身份证号码是否有效 实例215 验证车牌号码是否有效 实例216 验证网站地址是否有效 实例217 验证数量和金额 实例218 验证字符串是否...
  • 实例212 验证手机号码是否正确 实例213 验证字符串是否为汉字 实例214 验证身份证号码是否有效 实例215 验证车牌号码是否有效 实例216 验证网站地址是否有效 实例217 验证数量和金额 实例218 验证字符串是否...
  • 38、图片加载器 39、意图相关工具类 40、JSON操作相关 41、软键盘相关 42、打印日志 43、循环定时器 44、阴历阳历相关 45、m3u8文件解析类 46、偶对象相关 47、获取MD5相关 48、音频播放相关 49、共享内存相关 50、...
  • 翻转视频垂直或水平旋转视频90°CW / CCW,视频旋转180°,顺时针/逆时针,视频旋转270°CW / CCW; 合并多个视频文件一起,或加入音频文件合并成一个; 调整视频图像的亮度,对比度,饱和度; 设置视频编解码器,...
  • 3.4 插入图片 34 3.4.1 图像标签 34 3.4.2 图文混排 36 3.5 创建超链接 38 3.5.1 什么是超链接 38 3.5.2 超链接标签 38 3.5.3 相对链接和绝对链接 39 3.5.4 网页中的特殊超链接 40 3.5.5 超链接标签中的...
  • C#.net_经典编程例子400个

    热门讨论 2013-05-17 09:25:30
    183 实例125 如何旋转JPG图像 184 实例126 如何实现图形翻转 185 4.5 图像效果 186 实例127 百叶窗效果显示图像 186 实例128 推拉效果显示图像 187 实例129 水平交错效果显示图像 188...
  • 实例073 使用正则表达式验证手机号 实例074 使用正则表达式验证身份证号 实例075 使用正则表达式验证两位小数 实例076 使用正则表达式验证一年的12个月份 实例077 使用正则表达式验证一个月的31天 实例078 ...
  • 实例073 使用正则表达式验证手机号 实例074 使用正则表达式验证身份证号 实例075 使用正则表达式验证两位小数 实例076 使用正则表达式验证一年的12个月份 实例077 使用正则表达式验证一个月的31天 实例078 ...
  • 实例073 使用正则表达式验证手机号 实例074 使用正则表达式验证身份证号 实例075 使用正则表达式验证两位小数 实例076 使用正则表达式验证一年的12个月份 实例077 使用正则表达式验证一个月的31天 实例078 ...
  •  实例073 使用正则表达式验证手机号 89  实例074 使用正则表达式验证身份证号 90  实例075 使用正则表达式验证两位小数 91  实例076 使用正则表达式验证一年的12个月份 92  实例077 使用正则表达式验证一个...
  • 实例073 使用正则表达式验证手机号 89 实例074 使用正则表达式验证身份证号 90 实例075 使用正则表达式验证两位小数 91 实例076 使用正则表达式验证一年的12个月份 92 实例077 使用正则表达式验证一个月的31天 93 ...
  • APKTool批处理版l

    2011-10-26 13:58:55
    将你需要汉化的APK文件,放到APKTOOL文件夹下面,双击运行“解包软件.BAT”,批处理会自动识别APK文件并开始解包,在这里我用FlipSilent(一个翻转静音工具)作为示例。 解包出来的资源存储在“汉化中的资源”...
  • • 统计二季度手机销量情况 • 利用SUMIF 函数实现多表汇总 • 按区间统计数值个数 • 学员英语成绩分段统计人数 • 计算比赛评分表中频率最高的分值 • 利用极值函数限定销售价格 • 取得不重复的第2 个最低报价 •...
  • 实例129 水平交错效果显示图像 188 实例130 垂直交错效果显示图像 190 实例131 图像纹理效果 191 实例132 图像浮雕效果 193 实例133 积木效果 194 实例134 马赛克效果显示图像 195 4.6 图像字体 197 ...
  • 实例134 如何实现图形翻转 196 4.5 图像效果 196 实例135 百叶窗效果显示图像 197 实例136 推拉效果显示图像 198 实例137 水平交错效果显示图像 199 实例138 垂直交错效果显示图像 200 实例139 图像纹理效果 201 ...

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

手机图片水平翻转