文档章节

fuelphp学习和知识积累

宇哲不犹豫
 宇哲不犹豫
发布于 2015/10/13 10:51
字数 1017
阅读 92
收藏 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
汕尾
程序员
学习 fuelphp (3)写一个消息发布 demo

前期准备 fuelphp 框架 apache + php + mysql 环境 php oil 可以正常使用 开始写代码 1、配置fuel/app/config/config.php 取消 // 'indexfile' => flase; 的注释,并修改为 'indexfile' => '......

宇哲不犹豫
2015/01/13
0
0
我也学php:编码规范/翻译自PSR

PHP社区百花齐放,拥有大量的函数库、框架和组件。PHP开发者通常会在自己的项目中使用若干个外部库,因而PHP代码遵循或尽量接近同一个代码风格就非常重要,可以让开发者方便地把多个代码库集...

新新
2014/09/01
0
0
教你在不使用框架的情况下也能写出现代化 PHP 代码

我为你们准备了一个富有挑战性的事情。接下来你们将以 无 框架的方式开启一个项目之旅。 首先声明, 这篇并非又臭又长的反框架裹脚布文章。也不是推销 非原创 思想 。毕竟, 我们还将在接下来...

summerbluet
04/04
0
0
10 个有意思的 PHP 教程

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

红薯
2012/04/19
4.4K
5
Novius OS Dubrovka 发布,CMS 系统

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

oschina
2014/02/12
639
1

没有更多内容

加载失败,请刷新页面

加载更多

docker run 创建一个新的容器并运行一个命令

docker run常用命令 docker run :创建一个新的容器并运行一个命令 语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 1.OPTIONS说明 -t:为容器重新分配一个伪输入终端,通常与 -i 同时使...

lwenhao
21分钟前
1
0
安装Win出现无法创建新的分区也找不到现有的分区解决方案

无法创建新的分区也找不到现有的分区 ### 首先在安装界面按下 Shift+F10### 在出现的CMD界面输入: diskpart 进入磁盘管理工具diskpart### 可以输入 : list disk 查看磁盘列表l...

Kxvz
24分钟前
1
0
关于 @ngrx/Store 下 obj 的扩展问题

昨天做 task 的时候,遇到了一个问题。 TypeError: can't define property "x": "obj" is not extensible 而我的代码是 public txTiles: Array<TransactionFilterTile>; constructor(priv......

IrisHuang
26分钟前
1
0
presto内存管理及调优

内存池 Presto有三种内存池,分别为GENERAL_POOL、RESERVED_POOL、SYSTEM_POOL。这三个内存池占用的内存大小是由下面算法进行分配的: builder.put(RESERVED_POOL, new MemoryPool(RESERVED...

张欢19933
26分钟前
1
0
Mysql5.7服务版安装

步骤1: 勾选同意协议 步骤2:选择Server only模式 步骤3:选择安装目录 步骤4:执行文件 步骤5:端口号与用户配置 步骤6:选择标准系统用户 Finish后,安装完成。...

lyle_luo
27分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部