1. 前端 h5手机端视频录制
ios系统要使用input 调用本地摄像,下面是调起录像的。
<input type="file" name="video" id="video-input" accept="video#zs#" capture="user" onchange="videoChange()" />
2. html5或者JS怎样调用手机摄像头或者相册
你给的网页用的是 <input accept="image/*" type="file">,在IOS端点击时会提示选择图片或相机,安卓端要看浏览器对这两个属性的优化,部分浏览器会直接跳转到资源管理器,优化做得好的可以直接提示选择相册或相机。
3. 用.net做的电子相册可以查看和管理
查看基本前端来实现,这样的插件很多,google一大堆,相册管理就后台的增删改,这很简单
4. 前端使用input选择图片(多张)仅提供思路
1.首先前端用input调用android相册,不能选择多张图,需要Android原生调用选择图片界面(非系统相册),可以选择PictureSelector框架。
在build.gradle中引入
// glide加载图片
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.2.3'
//glide版本慎用,高版本会导致闪退,具体参考github上的文件
implementation'com.github.bumptech.glide:glide:4.5.0'
2.在丛则webview中使用(可以直接调用相机setselectorPhoto)
3.选择照帆郑册片后得到数据
4.最后转化uri数组给前端(方法直接复制)
/*2.得到文件地址传递态宏前端*/
@SuppressWarnings("null")
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void onActivityResultAboveL(int requestCode,int resultCode, Intent data) {
if (requestCode != PictureConfig.CHOOSE_REQUEST
||mUploadCallbackAboveL ==null) {
return;
}
Uri[] results =null;
Uri uriData =null;
ArrayList uridatas =new ArrayList<>();
if (resultCode == Activity.RESULT_OK) {
if (data ==null) {
results =new Uri[]{imageUri};
}else {
// 3。得到文件地址集合
selectList = PictureSelector.obtainMultipleResult(data);
// 4。遍历转化uri,添加到uri集合
for (int i =0; i
uriData = Uri.fromFile(new File(selectList.get(i).getPath()));
uridatas.add(i, uriData);
}
// 5.uri集合转数组
results = (Uri[]) uridatas.toArray(new Uri[selectList.size()]);
}
if (results !=null) {
// 6.上传前端
mUploadCallbackAboveL.onReceiveValue(results);
mUploadCallbackAboveL =null;
}else {
results =new Uri[]{imageUri};
mUploadCallbackAboveL.onReceiveValue(results);
mUploadCallbackAboveL =null;
}
}else {
mUploadCallbackAboveL.onReceiveValue(null);
}
mUploadCallbackAboveL =null;
}
5. H5前端调用摄像头拍照
就需求本身而言,若是交给Native同事去蔽野开发,就是一个自定义相机的功能。可能要看怎么阻止系统拍摄照片后不进手机系统相册。
对于此需求若是前端来实现的话,也可以实现。大概就是调起摄像头后,获取当前画面,然后截取当前帧的画面,转换成图片保存。基本步骤如下:
【 思路问题不大,但是实际这样开发时,还会有以下几个问题: 】
1. 交互神禅体验不好
window.navigator.mediaDevices.getUserMedia浏览器BOM api时,需要用户手动点击确认,允许打开摄像头。游并尘交互体验不太好。
2. 画面画质问题
前端实现本质上和截图差不多,画面质量没有原生拍照效果好。
3. 浏览器API mediaDevices为undefined问题
window.navigator.mediaDevices在非以下三种情况下时,会为undefined,所以当为非https的域或者非本地localhost域,则都无法使用。
a. localhost 域
b. 开启了 HTTPS 的域
c. 使用 file:/// 协议打开的本地文件
【若想在http下也可使用,怎么办???】
通过设置chrome浏览器,开启相应flag可以实现。
a.. chrome浏览器输入 chrome://flags/#unsafely-treat-insecure-origin-as-secure
b. 将该 flag 切换成 enable 状态
c. 输入框中填写需要开启的域名,譬如example.com,多个以逗号分隔
6. 前端大屏项目自适应(个人笔记)
仔细观察 网易有数 , 网络suger ,他们都采用了css3的缩放transform: scale(X)属性,看到这是不是有种豁然开朗的感觉。
于是我们只要监听浏览器的窗口大小,然后控制变化的比例就好了。
以React的写法为例
监听window的resize事件最好加个节流函数debounce
然后一个简单的组件就封装好了
样式文件index.less
只要把页面放在这个组件中,就能实现跟大厂们类似的效果。这种方式下不管屏幕有多大,分辨率有多高,只要屏幕的比例跟你定的比例一致,都能呈现出完美效果。而且开发过程中,样式的单位也可以直接用px,省去了转换的烦恼~~~
最后附上npm链接: https://www.npmjs.com/package/react-scale-box
7. 如何在wordpress文章页里面添加排列整齐的相册功能
这个其实可以直接使用WordPress默认的媒体库功能,然后创建相册迅仿即可,只是这个需要你所使用的团陪WordPress主题前端CSS的一个美化,你看看截图,是不是塌昌蠢这样的效果呢!
8. web前端开发技术DIV+CSS页面布局 5行5列怎么弄
简单写了个例子,你看看就明白了,代码如下:
<html>
<head>
<meta charset="utf-8"/>
<title>用户指南 - 装企</title>
</head>
<body>
<div class="row">
<div class="col">1-1</div>
<div class="col">1-2</div>
<div class="col">1-3</div>
<div class="col">1-4</div>
<div class="col">1-5</div>
</div>
<div class="row">
<div class="col">2-1</div>
<div class="col">2-2</div>
<div class="col">2-3</div>
<div class="col">2-4</div>
<div class="col">2-5</div>
</div>
<div class="row">
<div class="col">3-1</div>
<div class="col">3-2</div>
<div class="col">3-3</div>
<div class="col">3-4</div>
<div class="col">3-5</div>
</div>
<div class="row">
<div class="col">4-1</div>
<div class="col">4-2</div>
<div class="col">4-3</div>
<div class="col">4-4</div>
<div class="col">4-5</div>
</div>
<div class="row">
<div class="col">5-1</div>
<div class="col">5-2</div>
<div class="col">5-3</div>
<div class="col">5-4</div>
<div class="col">5-5</div>
</div>
<style type="text/css">
*{padding: 0;margin: 0;}
.row{width: 1000px;display: flex;margin: 0 auto;}
.row:nth-child(1){background: red;}
.row:nth-child(2){background: dodgerblue;}
.row:nth-child(3){background: yellowgreen;}
.row:nth-child(4){background: grey;}
.row:nth-child(5){background: blueviolet;}
.col{width: 200px;height: 50px;line-height: 50px;border: 1px solid #ffffff;text-align: center;}
</style>
</body>
</html>
效果如下:
demo
9. 如何将QQ相册的新相放置放面
设为封面还是放到前端???
可以设为封面的,打开那张图片后有提示的..
10. html5怎样调用手机摄像头或者相册
用input type=file capture=camcorder调用摄像头,会先让你选择拍照或者从相册选取。
首先实现在浏览器中调用手机摄像头,实现拍照功能并且把拍下的照片显示在页面并上传到服务器上,然后再在服务器端进行分析。
首先实现在浏览器中调用摄像头,当然用现在火的不行的html5,html5中的<video>标签,并将从摄像头获得视频作为这个标签的输入来源。实现拍照功能的html5代码:
<article>
<style scoped>
video { transform: scaleX(-1); }
p { text-align: center; }
</style>
<h1>Snapshot Kiosk</h1>
<section id="splash">
<p id="errorMessage">Loading...</p>
</section>
<section id="app" hidden>
<p><video id="monitor" autoplay></video> <canvas id="photo"></canvas>
<p><input type=button value="📷" onclick="snapshot()">
</section>
<script>
navigator.getUserMedia({video:true}, gotStream, noStream);
var video = document.getElementById('monitor');
var canvas = document.getElementById('photo');
function gotStream(stream) {
video.src = URL.createObjectURL(stream);
video.onerror = function () {
stream.stop();
};
stream.onended = noStream;
video.onloadedmetadata = function () {
canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
document.getElementById('splash').hidden = true;
document.getElementById('app').hidden = false;
};
}
function noStream() {
document.getElementById('errorMessage').textContent = 'No camera available.';
}
function snapshot() {
canvas.getContext('2d').drawImage(video, 0, 0);
}
</script>
</article>
经本人测试在android手机的opera浏览器浏览器下可以正常实现手机拍照功能。android手机下的google chrome浏览器还不行,自带的浏览器也测试没有通过。iphone手机的safari浏览器也是不支持的。
想了解更多关于html5调用手机摄像头的内容可以点击http://dev.w3.org/2011/webrtc/editor/getusermedia.html。
图片的获取:
下面我们要从Canvas获取图片数据,其核心思路是用canvas的toDataURL将Canvas的数据转换为base64位编码的PNG图像,类似于“data:image/png;base64,xxxxx”的格式。
Html代码
var imgData =canvas.toDataURL("image/png");
因为真正图像数据是base64编码逗号之后的部分,所以我们实际服务器处理的图像数据应该是这部分,我们可以用两种办法来获取。
第一种:是在前端截取22位以后的字符串作为图像数据,例如:
Html代码
var data = imgData.substr(22);
如果要在上传前获取图片的大小,可以使用:
Html代码
var length = atob(data).length;// atob decodes a string of data which has been encoded using base-64 encoding
第二种:是在后端获取传输的数据后用后台语言截取22位以后的字符串。例如PHP里
php代码:
$image = base64_decode( str_replace('data:image/jpeg;base64,', '',$data);
图片上传:
在前端可以使用Ajax将上面获得的图片数据上传到后台脚本。例如使用jQuery时:
js代码
$.post('upload.php',{ 'data' : data } );
在后台我们用PHP脚本接收数据并存储为图片。
php代码
function convert_data($data){
$image = base64_decode( str_replace('data:image/jpeg;base64,', '',$data);
save_to_file($image);
}
function save_to_file($image){
$fp = fopen($filename, 'w');
fwrite($fp, $image); fclose($fp);
}
请注意,以上的解决方案不仅能用于Web App拍照上传,并且你可以实现把Canvas的输出转换为图片上传的功能。这样你可以使用Canvas为用户提供图片编辑,例如裁剪、上色、涂鸦的画板功能,然后把用户编辑完的图片保存到服务器上。