文档章节

fuelphp学习和知识积累

宇哲不犹豫
 宇哲不犹豫
发布于 2015/10/13 10:51
字数 1017
阅读 95
收藏 0

一、图片压缩

/**
     * 图片压缩  只针对文件后缀名为: jpg,png,jpeg
     * @param $file 文件路径
     * @param $tmp 为文件压缩条件,即当图片的长宽的长度最大的那个,大于$tmp值时进行压缩
     * 压缩规则:取图片的长宽最大的那个,再设置为 $tmp 再等比压缩其他
     *
     */
    public static function requestImageResize($file,$tmp = 1536){
        \Fuel\Core\Log::debug("======================================== Image Resize Begin =====================================");
        \Fuel\Core\Log::debug("filePath = $file ");
//        $tmp = 1536;
        $strs = explode('.',$file);
        $index = count($strs) - 1;
        $str = strtolower($strs[$index]);
        if( $str == "jpg" || $str == "png"|| $str == "jpeg" ){
            list($width, $height) = getimagesize($file);
            \Fuel\Core\Log::debug("width=$width   height=$height");
            $newwidth = $width;
            $newheight = $height;
            $max = $newheight >= $newwidth ? $newheight:$newwidth;
            $flag = $newheight >= $newwidth ? 1:2;
            if($max>$tmp){
                \Fuel\Core\Log::debug("resize");
                if( $flag == 2 ){
                    $offset=$width/$tmp;
                    $newwidth=$tmp;
                    $newheight=$height/$offset;
                }else{
                    $offset=$height/$tmp;
                    $newheight=$tmp;
                    $newwidth=$width/$offset;
                }
                $src_im = imagecreatefromjpeg($file);
                $dst_im = imagecreatetruecolor($newwidth, $newheight);
                imagecopyresized($dst_im, $src_im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
                imagejpeg($dst_im,$file); //输出压缩后的图片
                imagedestroy($dst_im);
                imagedestroy($src_im);
            }else{
                \Fuel\Core\Log::debug("no resize");
            }
        }
        \Fuel\Core\Log::debug("======================================== Image Resize End  =====================================");
    }

二、视频压缩

这里需要安装 Mplayer

/**
 ** @param $in  源文件路径
 * @param $out_vid  目的文件路径
 * @return mixed  目的文件路径
 * MPlayer-mingw32-1.0rc1     ffmpeg
 */
public static  function flv_convert($in, $out_vid)
{
    \Fuel\Core\Log::debug(date("Y-m-j H:i:s")."  ===================  flv_convert  $in  to $out_vid  begin");
    $cmd = 'mencoder '.$in.' -o '.$out_vid.' -af volume=10 -aspect 16:9 -of avi -noodml -ovc x264 -x264encopts bitrate=500:level_idc=41:bframes=3:frameref=2: nopsnr: nossim: pass=1: threads=auto -oac mp3lame';
    $res = shell_exec($cmd);
    \Fuel\Core\Log::debug(date("Y-m-j H:i:s")."  ===================  flv_convert  $in  to $out_vid  finish");
    return $out_vid;

}

三、生成 excel 文件

其中文件保存路径$fileName,我这里使用的是相对路径

/**
 * @param array $head           头部(如果要输出序号就要在这里的第一个添加需要标识)
 * @param array $data           数据
 * @param bool $data_id_flag    标识是否需要输出序号,如果是则在每一行前面输出序号
 * @return string               输出文件保存位置
 * @throws PHPExcel_Exception
 * @throws PHPExcel_Writer_Exception
 */
public static function doExportExcel($head = array(),$data = array(),$data_id_flag = true ){
     $objPHPExcel = new PHPExcel();
     //表头
     $start = 'A';//初始格代表A
     $col = 1;//初始格
     foreach($head as $key=>$row){
         $cell = $start.$col;
         $objPHPExcel->setActiveSheetIndex(0)
             ->setCellValue($cell, $row);
         $objPHPExcel->getActiveSheet()->getStyle($cell)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
         $objPHPExcel->getActiveSheet()->getStyle($cell)->getAlignment()->setWrapText(true);
         $objPHPExcel->getActiveSheet()->getColumnDimension($start)->setAutoSize(true);
         #设置字体
         $objFontA5 = $objPHPExcel->getActiveSheet()->getStyle($cell)->getFont();
         $objFontA5->setName('Microsoft Yahei');
         $objFontA5->setSize(11);
         $objFontA5->setBold(true);
         $objFontA5->getColor()->setARGB('FF333333');
         $start = ++$start;

     }
     //数据
     $start = 'A';//初始格代表A
     $col = 2;//初始格
     $j = 1;
     foreach($data as $rows){
         if($data_id_flag){
             $cell = $start.$col;
             $objPHPExcel->setActiveSheetIndex(0)
                 ->setCellValueExplicit($cell,$j++ , PHPExcel_Cell_DataType::TYPE_STRING);
             $start = ++$start;
         }
         foreach($rows as $key=>$val){
             $cell = $start.$col;
             $objPHPExcel->setActiveSheetIndex(0)
                 ->setCellValueExplicit($cell, $val, PHPExcel_Cell_DataType::TYPE_STRING);
             $start = ++$start;
         }
         $col++;
         $start = 'A';
     }
     // Rename sheet
     $objPHPExcel->getActiveSheet()->setTitle('DataSheet');
     // Set active sheet index to the first sheet, so Excel opens this as the first sheet
     $objPHPExcel->setActiveSheetIndex(0);
     $savefilename = "data ".date('Ymd His').".xls";
     //文件保存路径,这里可做修改
     $fileName = 'file/'.$savefilename;
     header('Content-Type: application/vnd.ms-excel');
     header('Content-Disposition: attachment;filename="'.$savefilename.'"');
     header('Cache-Control: max-age=0');

     $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
     $objWriter->save($fileName);
     return $fileName;
 }

四、pdf转图片

这里需要在安装 ImageMagick 和得到相应的 dll  然后再修改配置 php.ini 添加 extension=php_imagick.dll;

注意:要安装对版本

/**
 * @param $PDF 绝对路径
 * @param $Path 绝对路径
 * @return array
 * 安装 ImageMagick-6.8.6-Q16 和 相应的 dll
 */
public static function pdf2png($PDF,$Path){
    if(!extension_loaded('imagick')){
        echo "imagick extension_loaded fail";
        return false;
    }
    if(!file_exists($PDF)){

        echo $PDF;
        return false;
    }
    $IM = new Imagick();
    $IM->setResolution(120,120);
    $IM->setCompressionQuality(100);
    $IM->readImage($PDF);
    foreach($IM as $Key => $Var){
        $Var->setImageFormat('png');
        $Filename = $Path.'/'.md5($Key.time()).'.png';
        if($Var->writeImage($Filename)==true){
            $Return[]= $Filename;
        }
    }
    return $Return;
}

五、word转pdf

需要安装  openoffice 和 配置com访问权限

/**
 * word 文档转pdf
 * @param $doc_url           源文档的全路径
 * @param string $output_url 索要保存的路径包括文件名
 * 需要安装  openoffice 和 配置其访问权限
 * 博客 http://www.firerise.com.cn/article_ar71.html
 */
public static function word2pdf($doc_url,$output_url="file:///Q:/bsl/wujixian/shengchang/qiye/8/infiniteus-sharefun/web/public/file"){
    $output_url = $output_url."/1.pdf";
    echo $output_url;
    $osm = new COM("com.sun.star.ServiceManager")or die ("Please be sure that OpenOffice.org is installed.n");
    echo "sss";
    $args = array(Service_Util::MakePropertyValue("Hidden",true,$osm));
    $oDesktop = $osm->createInstance("com.sun.star.frame.Desktop");
    $oWriterDoc = $oDesktop->loadComponentFromURL($doc_url,"_blank", 0, $args);
    $export_args = array(Service_Util::MakePropertyValue("FilterName","writer_pdf_Export",$osm));
    $oWriterDoc->storeToURL($output_url,$export_args);
    $oWriterDoc->close(true);
}

/**
 * 辅助 word2pdf 方法完成功能
 * @param $name
 * @param $value
 * @param $osm
 * @return mixed
 */
static function MakePropertyValue($name,$value,$osm){
    $oStruct = $osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
    $oStruct->Name = $name;
    $oStruct->Value = $value;
    return $oStruct;
}







© 著作权归作者所有

宇哲不犹豫
粉丝 0
博文 44
码字总数 18225
作品 0
汕尾
程序员
私信 提问
Novius OS Dubrovka 发布,CMS 系统

Novius OS Dubrovka 发布,此版本添加俄罗斯语,西班牙语和拉丁国际语的翻译;改进了应用扩展机制;更新了软件,包括 FuelPHP 1.7.1 。 Novius OS 是一个 CMS 系统,适合今天多频道的环境。其...

oschina
2014/02/12
641
1
Novius OS 2.3.2 发布,CMS 系统

Novius OS 2.3.2 修复了 Profiler 中的 XSS 安全问题。 Novius OS 是一个 CMS 系统,适合今天多频道的环境。其目标是为用户提供一个简单的工具来管理 Web 网站、社交网络、移动应用、电子邮件...

oschina
2013/12/04
1K
0
Novius OS 4.2 发布,内容管理系统

Novius OS 4.2 发布,此版本是第二个 Dubrovka 的中间版本。 Novius OS 是一个 CMS 系统,适合今天多频道的环境。其目标是为用户提供一个简单的工具来管理 Web 网站、社交网络、移动应用、电...

oschina
2014/04/17
751
0
10 个有意思的 PHP 教程

今天我为大家挑选了 10 个关于 PHP 的教程,设计到 pChart、投票、图片过滤、facebook 连接器等等,希望对你有用。 1. pChart Revisited with Google Analytics 在这篇文章中你将学习如何使用...

红薯
2012/04/19
4.6K
5
fuelphp框架的开源项目

有没有基于fuelphp框架的开源项目,最好是电子商务的,求推荐!

姚善良
2014/07/07
114
0

没有更多内容

加载失败,请刷新页面

加载更多

ES 集群上,业务单点如何优化升级?

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! ES 基础 ES 集群 ES 集群上业务优化 一、ES 基础 ES 的安装下载,网上一大片,我这...

泥瓦匠BYSocket
30分钟前
2
0
input accept属性限制文件上传格式

上传文件的类型;具体做法如下所示: 注意:accept属性可以限制上传格式,其有兼容性如下 《1》上传.csv格式的 <input text="file" accept=".csv" /> 《2》上传.xls格式 <input text="file"......

Jack088
38分钟前
1
0
阿里开发者招聘节 | 面试题01:如何实现一个高效的单向链表逆序输出?

面试,如同玩一场饥饿游戏:既要对环境了然于胸,又要对自身心知肚明。发现一个好工作不容易,但成功应聘又会面临一系列的挑战。 为帮助开发者们提升面试技能、有机会入职阿里,云栖社区特别...

阿里云云栖社区
49分钟前
3
0
使用scp命令在多个Linux系统间进行文件复制

一,什么是scp scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。scp命令可以在linux服务器之间复制文件和目录.scp使用ssh安全协议传输数据,具有和ssh一样的验证机制,从而安全的远...

老孟的Linux私房菜
49分钟前
0
0
CentOS7中ESL服务部署记录

在CentOS7上部署价签系统,需要安装Mysql,Redis,emqtt,jdk。 1)Mysql,参考 2)Redis,参考 3)emqtt,参考 4)jdk,参考 在jdk的下载地址中,下载rpm文件,通过ftp上传到虚拟机后,通过...

莫在全
53分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部