博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转载】基于JavaScript在线头像图片编辑前端后台实现
阅读量:6159 次
发布时间:2019-06-21

本文共 3383 字,大约阅读时间需要 11 分钟。

  hot3.png

maybe yes 发表于2014-12-12 10:58

原文链接 :   来自 : 

前端使用Jcrop实现预览和获取图片大小,选定位置等信息。关于Jcrop,项目地址在GITHUB上,它基于MIT开源协议。本人看了下项目的源代码,感觉作者蛮认真的。Jcrop做到了兼容IE系列和其他主流浏览器,非常稳定,让开发者不再为前端方面花费太多精力。加上本人不太喜欢Flash实现,纯JavaScript实现的功能效率会更高。由于时间比较仓促,代码没有过多的优化,有点乱,下面公布前端实现和服务端处理图片部分代码。

前端实现方式如下:

imagecropper方法在网上找的,写的比较差,以后有时间会整理下代码。后台图片处理方式如下:

 $target_ratio)    {        $cropped_width  = $source_width;        $cropped_height = $source_width * $target_ratio;        $source_x = 0;        $source_y = ($source_height - $cropped_height) / 2;    }    // 源图过宽    elseif ($source_ratio < $target_ratio)    {        $cropped_width  = $source_height / $target_ratio;        $cropped_height = $source_height;        $source_x = ($source_width - $cropped_width) / 2;        $source_y = 0;    }    // 源图适中    else    {        $cropped_width  = $source_width;        $cropped_height = $source_height;        $source_x = 0;        $source_y = 0;    }    switch ($source_mime)    {        case 'image/gif':            $source_image = imagecreatefromgif($source_path);            break;        case 'image/jpeg':            $source_image = imagecreatefromjpeg($source_path);            break;        case 'image/png':            $source_image = imagecreatefrompng($source_path);            break;        default:            return false;            break;    }    $target_image  = imagecreatetruecolor($target_width, $target_height);    $cropped_image = imagecreatetruecolor($cropped_width, $cropped_height);    // 裁剪    imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height);    // 缩放    imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $target_width, $target_height, $cropped_width, $cropped_height);    /* header('Content-Type: image/jpeg'); */    ob_start();    imagejpeg( $target_image );    return ob_get_clean();    /* imagedestroy($source_image);    imagedestroy($target_image);    imagedestroy($cropped_image);    exit; */}$boundx = $_POST['boundx'];$boundy = $_POST['boundy'];$posinfo = $_POST['posinfo'];$realimg = '用户上传后的原图地址';$resizeimg = imagecropper($realimg, $boundx, $boundy);file_put_contents($realimg, $resizeimg);/* 上面完成了图片的大小压缩,下面将图片进行裁剪 */$source_info   = getimagesize($realimg);$source_mime   = $source_info['mime'];switch ($source_mime){    case 'image/gif':        $source_image = imagecreatefromgif($realimg);        break;    case 'image/jpeg':        $source_image = imagecreatefromjpeg($realimg);        break;    case 'image/png':        $source_image = imagecreatefrompng($realimg);        break;    default:        return false;        break;}$target_image  = imagecreatetruecolor($posinfo['w'], $posinfo['h']);$cropped_image = imagecreatetruecolor($posinfo['w'], $posinfo['h']);imagecopy( $cropped_image, $source_image, 0, 0, $posinfo['x'], $posinfo['y'], $posinfo['w'], $posinfo['h'] );imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $posinfo['w'], $posinfo['h'], $posinfo['w'], $posinfo['h']);ob_start();switch( $source_mime ){    case 'image/gif':        imagegif( $target_image );        break;    case 'image/jpeg':        imagejpeg( $target_image );        break;    case 'image/png':        imagepng( $target_image );        break;    default:        return false;}file_put_contents($realimg, ob_get_clean() );

附上运行截图:

JavaScript头像图片编辑运行图-LMLPHP后院

JavaScript头像图片编辑运行图-LMLPHP后院

转载于:https://my.oschina.net/hosser/blog/371725

你可能感兴趣的文章
《CLR via C#》读书笔记 之 方法
查看>>
设计模式:组合模式(Composite Pattern)
查看>>
ContentValues 和HashTable区别
查看>>
LogicalDOC 6.6.2 发布,文档管理系统
查看>>
给PowerShell脚本传递参数
查看>>
实战2——Hadoop的日志分析
查看>>
利用FIFO进行文件拷贝一例
查看>>
Ecshop安装过程中的的问题:cls_image::gd_version()和不支持JPEG
查看>>
resmgr:cpu quantum等待事件
查看>>
一个屌丝程序猿的人生(六十六)
查看>>
Java 编码 UTF-8
查看>>
SpringMVC实战(注解)
查看>>
关于静态属性和静态函数
查看>>
进程的基本属性:进程ID、父进程ID、进程组ID、会话和控制终端
查看>>
spring+jotm+ibatis+mysql实现JTA分布式事务
查看>>
MyBatis启动:MapperStatement创建
查看>>
调查问卷相关
查看>>
eclipse启动无响应,老是加载不了revert resources,或停留在Loading workbench状态
查看>>
1. Git-2.12.0-64-bit .exe下载
查看>>
怎样关闭“粘滞键”?
查看>>