文档章节

fuelphp学习和知识积累

宇哲不犹豫
 宇哲不犹豫
发布于 2015/10/13 10:51
字数 1017
阅读 89
收藏 0
点赞 0
评论 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
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
一位 40 岁老程序员对职业生涯的思考

本文是国外一位 40 岁老程序员对职业生涯的思考,他认为从长远来看,应该多投资一些不容易过期、衰竭期较长的知识领域中。 我是一名程序员,几个月前刚过完四十岁生日。某个星期六的早晨,我...

嘿你好夏天
2017/11/30
0
0
一位 40 岁老程序员对职业生涯的思考

本文是国外一位 40 岁老程序员对职业生涯的思考,他认为从长远来看,应该多投资一些不容易过期、衰竭期较长的知识领域中。 我是一名程序员,几个月前刚过完四十岁生日。某个星期六的早晨,我...

嘿你好夏天
2017/11/30
0
0
开发阶段总结

开发的关键点在于学习,学习可以说是在任何行业永恒的话题,学习什么?如何去学习?就编程而言,学习最终是为了应用,首先要学习到这种应用,然后学习其如何应用,再学为何能这样应用,最后学...

franos
2016/02/17
27
1
学习的技巧

在知乎偶然看到过费曼的技巧的相关文章,感觉神乎其神,好像只通过简简单单的几个步骤,就能够让自己的学习效率提升。大致是这样的, 一、找来一张空白的纸,写下你要学习的一个概念 二、假装...

xkl1992
01/17
0
0
积累的编程知识在十年后将有一半没用?一位 40 岁程序员的反思

热文导读 | 点击标题阅读 教你如何开发一款实用的完整Android App,附源码 吊炸天!74款APP完整源码! 一份年薪30万的Android面试宝典,附答案 英文:Ben Northrop 编译:开源中国 www.osch...

xj032w2j4ccjhow8s8
2017/12/28
0
0
一名 40 岁“老”程序员对职业生涯的思考

我是一名程序员,几个月前刚过完四十岁生日。某个星期六的早晨,我参加了一个 React Native 技术交流会,演讲者正在竭力说服我们为什么它会成为移动开发领域真正的下一个大事件。但对我来说,...

uw63zqpkxwlrl1
01/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

iOS安全应该做哪些事情

1. 尽量使用HTTPS协议。 2. 密码提交的时候,密码使用SHA256加密后传输,MD5等经过哈希碰撞已经可以推算出原文。 3. 密码提交的时候,可以加盐。 4. 密码保存在本地的时候,尽量使用钥匙串保...

HOrange
11分钟前
0
0
react native 注意事项

1. 环境参考官网 android studio 必装 java jdk安装 1.8版本(环境建议自己一步一步配置,切记不要 apt ) 2.有改变编译内容发现 会白屏,然后APP消失,请卸载原来的测试 appinfo (连续两次...

304158
17分钟前
0
0
FOMO游戏代码解析

源代码在此处

怎当她临去时秋波那一转
22分钟前
1
0
EOS智能合约与DApp开发入门

EOS的是Block.One主导研发的一个区块链底层公链系统,它专门为支撑商业去中心化 应用(Decentralized Application)而设计,其代码开源。 比特币被称为区块链1.0,因为它开辟了数字加密货币的...

笔阁
35分钟前
1
0
编译cjson到dll

https://blog.csdn.net/mengzhisuoliu/article/details/52203724 编译完成后 是纯lua实现的json decode 的10倍以上...

梦想游戏人
44分钟前
0
0
JS基础- Date 对象

Date 对象 Date 对象用于处理日期和时间。 创建 Date 对象的语法: var myDate=new Date() 注释:Date 对象会自动把当前日期和时间保存为其初始值。 Date 对象属性 属性 描述 constructor 返...

ZHAO_JH
46分钟前
0
0
Python数据分析numpy(1)

Python开源的科学计算基础库 1.表示N维数组对象ndarray 2.线性代数、傅里叶变换、随机数生成 3.广播函数,整合c++、c 一.数据的维度 1.数据 2.数据维度 3.一维数据 (1)特点 (2)Python中的...

十年磨一剑3344
49分钟前
1
0
csv导入Hive脚本

from pyspark.sql import HiveContexthivec = HiveContext(sc) # 创建一个hivecontext对象用于写执行SQL,sc为sparkcontext# 拼接一个字段类型字符串str_s = 'label String,'...

gulf
51分钟前
0
0
TensorFlow 隐含层 拟合 异或运算

a⊕b = (¬a ∧ b) ∨ (a ∧¬b) 数据 X = [[0, 0], [0, 1], [1, 0], [1, 1]]Y = [[0], [1], [1], [0]] 单层网络只能拟合线性问题,由于异或是非线性问题,需要使用多层网络 输入和输出 [[...

阿豪boy
今天
0
0
SVN 教程

http://www.runoob.com/svn/svn-tutorial.html 记一次 svn 管理的项目迁移工作 之前A服务器上的项目版本管理工具是用的SVN,后来,之前管理linux服务器的员工离职了,这管理服务器的工作也就...

yeahlife
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部