HTML5按比例缩略图片并上传的实例

<!DOCTYPE HTML PUBLIC>
<html>
 <head>
  <meta charset="utf-8">
  <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
  <title>HTML5按比例缩略图片并上传的实例</title>

  <style type="text/css">
    body{margin: 0px; background:#f2f2f0;}
    .title{color:#FFFF00; background:#000000; text-align:center; font-size:24px; line-height:50px; font-weight:bold;}
    .main{margin:10px auto 10px auto; text-align:center;}
    .main .file{padding-left:100px;}
    .showimg{margin:10px auto 10px auto; text-align:center;}
  </style>

  <script type="text/javascript">
    window.onload = function(){

        // 上传按钮事件
        document.getElementById(‘upload‘).onclick = function(){

            // 图片上传控件
            var img = document.getElementById(‘img‘).files[0];

            // 缩略尺寸
            var width = document.getElementById(‘width‘).value;
            var height = document.getElementById(‘height‘).value;

            // 判断是否选择图片
            if(!img){
                alert(‘请先选择图片‘);
                return ;
            }

            // 判断图片格式
            if(!(img.type.indexOf(‘image‘)==0 && img.type && /\.(?:jpg|png|gif)$/.test(img.name)) ){
                alert(‘图片只能是jpg,gif,png格式‘);
                return ;
            }

            // 判断width,height
            if(isNaN(parseInt(width)) || isNaN(parseInt(height))){
                alert(‘宽或高不正确‘);
                return ;
            }

            // 缩略图片并上传
            resize(img, width, height, upload);

        }

        // 缩略图片
        function resize(img, width, height, callback){

            // 创建临时图片对象
            var image = new Image;

            // 创建画布
            var canvas = document.createElement(‘canvas‘);
            var context = canvas.getContext(‘2d‘);

            // 临时图片加载
            image.onload = function(){

                // 图片尺寸
                var img_w = image.naturalWidth;
                var img_h = image.naturalHeight;

                // 缩略后尺寸
                var dimg_w;
                var dimg_h;

                // 计算缩略尺寸
                dimg_w = width;
                dimg_h = Math.ceil(dimg_w*img_h/img_w);

                if(dimg_h>height){
                    dimg_h = height;
                    dimg_w = Math.ceil(dimg_h*img_w/img_h);
                }

                // 定义画布尺寸
                canvas.width = dimg_w;
                canvas.height = dimg_h;

                // 在画布上按缩略尺寸画图
                context.drawImage(image, 0, 0, dimg_w, dimg_h);

                // 获取画布数据
                var imgdata = canvas.toDataURL(img.type);

                // 将画布数据回调返回
                if(typeof(callback)===‘function‘){
                    callback(imgdata);
                }

            }

            // file reader
            var reader = new FileReader();
            reader.readAsDataURL(img);

            reader.onload = function(e){
                image.src = reader.result;
            }

        }

        // 上传图片
        var upload = function(imgdata){
            $.post("server.php", {img: imgdata}, function(ret){
                if(ret.img!=‘‘){
                    $(‘#showimg‘).html(‘<a href="‘ + ret.img + ‘" target="_blank"><img src="‘ + ret.img + ‘"></a>‘);
                }else{
                    alert(‘upload fail‘);
                }
            }, ‘json‘);
        }

  }
  </script>

 </head>

 <body>
  <p class="title">HTML5按比例缩略图片并异步上传的实例</p>
  <div class="main">
      <p class="file">图片:<input type="file" id="img"></p>
      <p>宽:<input type="text" id="width" value="320"></p>
      <p>高:<input type="text" id="height" value="240"></p>
      <p><input type="button" id="upload" value="按比例缩略图片并上传"></p>
  </div>
  <p class="showimg" id="showimg"></p>
 </body>
</html>
$img = isset($_POST[‘img‘])? $_POST[‘img‘] : ‘‘;

// 获取图片
list($type, $data) = explode(‘,‘, $img);

// 判断类型
if(strstr($type,‘image/jpeg‘)!=‘‘){
    $ext = ‘.jpg‘;
}elseif(strstr($type,‘image/gif‘)!=‘‘){
    $ext = ‘.gif‘;
}elseif(strstr($type,‘image/png‘)!=‘‘){
    $ext = ‘.png‘;
}

// 生成的文件名
$photo = time().$ext;

// 生成文件
file_put_contents($photo, base64_decode($data), true);

// 返回
header(‘content-type:application/json;charset=utf-8‘);
$ret = array(‘img‘=>$photo);
echo json_encode($ret);
时间: 2024-11-06 02:41:45

HTML5按比例缩略图片并上传的实例的相关文章

百度 flash html5自切换 多文件异步上传控件webuploader基本用法

双核浏览器下在chrome内核中使用uploadify总有302问题,也不知道如何修复,之所以喜欢360浏览器是因为帮客户控制渲染内核: 若页面需默认用极速核,增加标签:<meta name="renderer" content="webkit"> 若页面需默认用ie兼容内核,增加标签:<meta name="renderer" content="ie-comp"> 若页面需默认用ie标准内核,增加标签

[html5+java]文件异步读取及上传核心代码

html5+java 文件异步读取及上传关键代码段 功能: 1.多文件文件拖拽上传,file input 多文件选择 2.html5 File Api 异步FormData,blob上传,图片显示 3.java端接受 核心代码: 1.拖拽代码段: 1 <div id="dropzone"> 2 <div>Drag & drop your file here...</div> 3 <div id='showFile'></di

HTTP的上传文件实例分析

HTTP的上传文件实例分析 由于论坛不支持Word写文章发帖. 首先就是附件发送怎么搞,这个必须解决.论坛是php的.我用Chrome类浏览器跟踪请求,但是上传的文件流怎么发过去没找到,估计流可能多或者什么的不好显示,只知道发送了文件名字.需要实际了解下post文件,不能只会后台或界面不了解前台数据处理和协议怎么传送数据. 图中:有些相关文章 HTTP请求中的form data和request payload的区别 AJAX POST请求中参数以form data和request payload

PHP-------文件上传的实例

文件上传的实例 一.上传头像 在注册时,要求用户上传头像,登陆主页面,显示用户信息时,头像也要显示出来. 例子: 注册页面: 图片存数据库时是text类型. <title>无标题文档</title> </head> <body> <!--实现用户注册的页面--> <h1>注册</h1> <!--在提交时,除了提交文本性的东西,还要提交文件,要把选中的文件一起提交到处理页面,在处理页面把文件存下来,然后把文件的路径写到

jQuery.uploadify文件上传组件实例讲解

1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好,无刷新,带上传进度等等.在最近的短信平台开发中,使用Uploadify进行文件上传. Uploadify官网地址是:http://www.uploadify.com/ 可满足项目开发需求. 下载地址:http://www.uploadify.com/wp-content/uploads/files/

PHP+ajaxForm异步带进度条上传文件实例

在使用ajaxForm方法之前,首先需要安装form.js的插件,网上有: 一.首先说用法,ajaxForm可以接收0或1个参数,该参数可以是一个变量.一个对象或回调函数,这个对象主要有以下参数: var object= {                     url:url, //form提交数据的地址   type:type,   //form提交的方式(method:post/get)   target:target, //服务器返回的响应数据显示的元素(Id)号           

【SSH2(实践篇)】--Struts2文件上传下载实例

上篇文章又一次回顾了Struts2的运行机制,对它的运行步骤做了一步步的解析,这个解析不但再一次理清了Struts2的使用方法,而且对它的映射机制进行了深入的解析,并在最后通过一个实例来介绍了Struts2的一种使用方法,这里将做一个有关文件上传下载的实例. 一.文件上传 Struts2并没有提供文件上传的组件,所以想要实现上传的功能就必须通过第三方组件来实现,在Struts2引用的jar中包含了文件上传的组件,它是通过commons-fileupload.jar和commons-io.jar来

PHP实现视频文件上传完整实例

PHP实现视频文件上传完整实例 转载 这篇文章主要介绍了PHP实现视频文件上传的技巧,包含了PHP配置信息的设计及大文件的处理,需要的朋友可以参考下 本文以一个完整实例的形式实现了视频文件上传的功能.虽然是比较基础的应用,仍有一定的参考价值.分享给大家供大家参考之用.具体方法如下: 首先,对PHP来说视频也属于文件,我们利用这个道理,可以通过与上传普通文件类似的方式实现上传PHP视频文件.不同的是视频文件一般较大,上传时间长,而php配置文件也对上传文件的大小有限制.如果需要更好地用PHP实现文

Struts2 + uploadify 多文件上传完整实例!

首先我这里使用的是  Jquery  Uploadify3.2的版本  导入相关的CSS  JS    <link rel="stylesheet" type="text/css" href="<%=basePath%>css/uploadify/uploadify.css"> <script src="<%=basePath%>js/jquery.min.js"></sc