图像压缩的uiwebview html表单
Image compression on uiwebview html form
我有一个简单的html表单,输入类型为image:
...
<form action="new.php" method="POST" enctype="multipart/form-data">
<input type="text" name="text" placeholder="text"><br><br>
<input type="file" name="file" accept="image/*;capture=camera"><br><br>
<input type="submit" value="Submit">
</form>
...
在一个iOS应用中,我实现了一个UIWebView
,这个webview加载了之前提供的html。
在这种形式下,我可以添加一个文本和一个文件(在这种情况下是一个图像),但我想做的是预处理图像,如果图像太大,然后调用一个方法返回一个较小的图像。
我试图拦截-webView:shouldStartLoadWithRequest:navigationType:
的请求,并从请求体/bodyStream修改NSData,但它似乎太混乱了。
我还尝试使用javascript
使用自定义URI
调用本机对象方法:
function selectFile() {
window.location = "testapp://selectFile";
}
应用程序部分:
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = request.URL;
if ([[url scheme] isEqualToString:@"testapp"]) {
[self openCustomFile];
return NO;
}
return YES;
}
使用这个,我可以调用我自己的文件选择器和做任何我想要的UIImage
,但我现在的问题是,我不知道我怎么能把它附加到UIWebView
的形式,据我所知,这是不可能的。
所以,有什么方法来预处理图像附加在UIWebView
形式?
在JavaScript中,您可以将图像文件呈现为画布元素,然后将画布转换为可上载的调整大小/压缩图像。像这样的代码应该可以工作:
<form id="form">
<input type="file" id="imageFile"/>
<input type="submit" value="Submit"/>
</form>
<script type="text/javascript">
document.getElementById('imageFile').addEventListener('change', resize);
function resize(e) {
var canvas = document.createElement('canvas');
canvas.width = 200;
canvas.height = 200;
var ctx = canvas.getContext('2d');
var img = new Image;
img.src = URL.createObjectURL(e.target.files[0]);
img.onload = function() {
//convert image to canvas
ctx.drawImage(img, 0, 0);
var dataURL = canvas.toDataURL('image/jpeg', 0.5),
blob = dataURItoBlob(dataURL),
fd = new FormData(document.getElementById('form'));
fd.append("canvasImage", blob);
//remove imageFile
var imageFile = document.getElementById('imageFile');
document.getElementById('form').removeChild(imageFile);
}
}
</script>
相关文章:
- 使用 AngularJS Http Post 将表单 html 中的数据发布到服务器
- 如何使用js框架验证Laravel 4表单(html)
- 在表单html上编程php和警告javascript
- 联系表单-Html和Javascript只包含在Html(tumblr)中
- javascript表单(html网页)名称字段的验证
- Javascript多维数组表单html列表
- 单选按钮上的无提示验证被忽略,而它只适用于相同表单html中的文本字段
- 从表单html中检索数据
- 刷新页面后是否可以保留表单(html)内容数据
- 部分表单HTML未加载
- 控制器和输入表单html使用var Javascript
- 获取表单html及其值
- 如何使表单(html、jsp)中的Textfield只接受dd/mm/yyyy格式,而无需单击提交按钮
- 提交隐藏的表单HTML
- 信用卡表单html值长度
- PHP表单HTML按钮
- 简单的方式来改变输入字段的视觉顺序动态(不改变表单HTML)
- 表单HTML没有更新
- 制作一个不序列化javascript的一对多表单html
- 搜索parse.com数据表单html输入