pdf文件转图片
<?php
/*** PDF2PNG* @param $pdf 待處理的PDF文件 * @param $path 待保存的圖片路徑* @param $page1 待導出的頁面 -1為全部 0為第一頁 1為第二頁* @return 保存好的圖片路徑和文件名* 注:此處為坑 對于Imagick中的$pdf路徑 和$path路徑來說, php版本為5+ 可以使用相對路徑。php7+版本必須使用絕對路徑。所以,建議大伙使用絕對路徑。*/
function pdf2png($pdf,$path,$page1=-1)
{if(!extension_loaded('imagick')){echo '‘環境未安裝imagick程序';return false;}if(!file_exists($pdf)){echo '要處理的PDF文件不存在';return false;}if(!is_readable($pdf)){echo '要處理的PDF文件權限不夠';return false;}$im = new Imagick();$im->setResolution(150,150);$im->setCompressionQuality(100);if($page1==-1)$im->readImage($pdf);else$im->readImage($pdf."[".$page1."]");foreach ($im as $Key => $Var){$Var->setImageFormat('png');$filename = $path;if($Var->writeImage($filename) == true){$Return[] = $filename;}}//返回轉化圖片數組,由于pdf可能多頁,此處返回二維數組。return $Return;
}/*** Spliceimg* @param array $imgs pdf轉化png 路徑 * @param string $path 待保存的圖片路徑* @return string 將多個圖片拼接為成圖的路徑* 注:多頁的pdf轉化為圖片后拼接方法*/
function Spliceimg($imgs = array(),$img_path = '')
{//自定義寬度$width = 1230;//獲取總高度$pic_tall = 0;foreach ($imgs as $key => $value) {$info = getimagesize($value);$pic_tall += $width/$info[0]*$info[1];}// 創建長圖$temp = imagecreatetruecolor($width,$pic_tall);//分配一個白色底色$color = imagecolorAllocate($temp,255,255,255);imagefill($temp,0,0,$color);$target_img = $temp;$source = array();foreach ($imgs as $k => $v) {$source[$k]['source'] = Imagecreatefrompng($v);$source[$k]['size'] = getimagesize($v);}$num = 1;$tmp = 1;$tmpy = 2; //圖片之間的間距$count = count($imgs);for ($i = 0; $i < $count; $i++) {imagecopy($target_img, $source[$i]['source'], $tmp, $tmpy, 0, 0, $source[$i]['size'][0], $source[$i]['size'][1]);$tmpy = $tmpy + $source[$i]['size'][1];//釋放資源內存imagedestroy($source[$i]['source']);}$returnfile = $img_path.date('Y-m-d');if (!file_exists($returnfile)){if (!make_dir($returnfile)){/* 創建目錄失敗 */return false;}}$return_imgpath = $returnfile.'/'.md5(time().$pic_tall.'pdftopng').'.png';imagepng($target_img,$return_imgpath);return $return_imgpath;
}/*** make_dir* @param string $folder 生成目錄地址* 注:生成目錄方法*/
function make_dir($folder)
{$reval = false;if (!file_exists($folder)){/* 如果目錄不存在則嘗試創建該目錄 */@umask(0);/* 將目錄路徑拆分成數組 */preg_match_all('/([^\/]*)\/?/i', $folder, $atmp);/* 如果第一個字符為/則當作物理路徑處理 */$base = ($atmp[0][0] == '/') ? '/' : '';/* 遍歷包含路徑信息的數組 */foreach ($atmp[1] AS $val){if ('' != $val){$base .= $val;if ('..' == $val || '.' == $val){/* 如果目錄為.或者..則直接補/繼續下一個循環 */$base .= '/';continue;}}else{continue;}$base .= '/';if (!file_exists($base)){/* 嘗試創建目錄,如果創建失敗則繼續循環 */if (@mkdir(rtrim($base, '/'), 0777)){@chmod($base, 0777);$reval = true;}}}}else{/* 路徑已經存在。返回該路徑是不是一個目錄 */$reval = is_dir($folder);}clearstatcache();return $reval;
}
?
轉載于:https://www.cnblogs.com/zwtqf/p/11305983.html
總結
- 上一篇: http请求curl
- 下一篇: base64图片保存获取本地路径