文档章节

fuelphp学习和知识积累

宇哲不犹豫
 宇哲不犹豫
发布于 2015/10/13 10:51
字数 1017
阅读 94
收藏 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
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
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

没有更多内容

加载失败,请刷新页面

加载更多

C4C销售订单行项目价格维护方法

需求很简单,能够创建销售订单,在行项目里添加产品,带出价格来,同时把总价显示在销售订单抬头区域。 如下图所示: 下面是具体配置。 Business Configuration里,点击Sales Order的配置: ...

JerryWang_SAP
22分钟前
3
0
deepin中配置robot framework环境

本文永久更新地址:https://my.oschina.net/bysu/blog/2989005 【若要到岸,请摇船:开源中国 不最醉不龟归】 1.在终端中输入pip,回车,如果提示没有该命令,则先安转pip sudo apt-get inst...

不最醉不龟归
今天
7
0
OSChina 周日乱弹 —— 钱不还,我就当你人不在了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享Bigleaf的单曲《小鹿》 《小鹿》- Bigleaf 手机党少年们想听歌,请使劲儿戳(这里) 周日在家做什么? 做手工呀, @poorfis...

小小编辑
今天
173
5
EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
今天
22
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
今天
32
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部