婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP實現將幾張照片拼接到一起的合成圖片功能【便于整體打印輸出】

PHP實現將幾張照片拼接到一起的合成圖片功能【便于整體打印輸出】

熱門標簽:400電話申請辦理 福建高頻外呼防封系統哪家好 全國各省地圖標注點 外呼系統人工客服 網絡電話400申請 隨州銷售電銷機器人公司 周口網絡回撥外呼系統 百度地圖標注類型是酒店 商丘外呼系統好處

本文實例講述了PHP實現將幾張照片拼接到一起的合成圖片功能。分享給大家供大家參考,具體如下:

?php
/**
 * 作品合成程序
 * 針對單面,封面不做特殊處理
 */
$src_path = $argv[1]; // php該文件,第一個參數是文件夾名(作品集),可相對路徑
$dst_path = '../image/'.$src_path; // 生成文件存放的目標位置
if (!file_exists($dst_path)){
 mkdir($dst_path);
}
// 合成圖推薦大小,單頁大小建議:1120*1600
$g_width = 1120;
$g_height = 1600;
$g_border = 20; // 邊框
// 模板
// 圖片張數=>array(位置=>array(x,y,width,height))
$g_models = array(
 1=>array( // 單頁總張數
  0=>array( // 位置
   'x' => 0 + $g_border,
   'y' => 0 + $g_border,
   'w' => $g_width - 2*$g_border,
   'h' => $g_height - 2*$g_border,
  ),
 ),
 3=>array(
  0=>array(
   'x' => 0 + $g_border,
   'y' => 0 + $g_border,
   'w' => $g_width - 2*$g_border,
   'h' => ($g_height - 3*$g_border)/2,
  ),
  1=>array(
   'x' => 0 + $g_border,
   'y' => 0 + $g_border + ($g_height - 3*$g_border)/2 + $g_border,
   'w' => ($g_width - 3*$g_border)/2,
   'h' => ($g_height - 3*$g_border)/2,
  ),
  2=>array(
   'x' => 0 + $g_border + ($g_width - 3*$g_border)/2 + $g_border,
   'y' => 0 + $g_border + ($g_height - 3*$g_border)/2 + $g_border,
   'w' => ($g_width - 3*$g_border)/2,
   'h' => ($g_height - 3*$g_border)/2,
  ),
 ),
 4=>array(
  0=>array(
   'x' => 0 + $g_border,
   'y' => 0 + $g_border,
   'w' => ($g_width-3*$g_border)/2,
   'h' => ($g_height-3*$g_border)/2,
  ),
  1=>array(
   'x' => 0 + $g_border + ($g_width-3*$g_border)/2 + $g_border,
   'y' => 0 + $g_border,
   'w' => ($g_width-3*$g_border)/2,
   'h' => ($g_height-3*$g_border)/2,
  ),
  2=>array(
   'x' => 0 + $g_border,
   'y' => 0 + $g_border + ($g_height-3*$g_border)/2 + $g_border,
   'w' => ($g_width-3*$g_border)/2,
   'h' => ($g_height-3*$g_border)/2,
  ),
  3=>array(
   'x' => 0 + $g_border + ($g_width-3*$g_border)/2 + $g_border,
   'y' => 0 + $g_border + ($g_height-3*$g_border)/2 + $g_border,
   'w' => ($g_width-3*$g_border)/2,
   'h' => ($g_height-3*$g_border)/2,
  ),
 ),
);
// 排版
$g_tasks = array(
 0 => array(0), // 封面封底
 1 => array(1),
 2 => array(2),
 3 => array(3),
 4 => array(4,5,6),
 5 => array(7),
 6 => array(8),
 7 => array(9,10,11),
 8 => array(12),
 9 => array(13),
 10 => array(14,15,16),
 11 => array(17),
 12 => array(18),
 13 => array(19,20,21),
 14 => array(22),
 15 => array(23),
 16 => array(24,25,26),
 17 => array(27,28,29),
 18 => array(30),
 19 => array(31),
 20 => array(32,33,34),
 21 => array(35),
 22 => array(36),
 23 => array(37),
 24 => array(38,39,40,41),
 25 => array(42,43,44),
 26 => array(45),
 27 => array(46),
 28 => array(47,48,49),
 29 => array(50),
 30 => array(51),
);
// 獲取文件夾下的所有圖片名
$jpgs = array();
$files = scandir($src_path); // 目錄下所有文件名
foreach($files as $file){
 $path_parts = pathinfo($src_path.'/'.$file);
 if($path_parts['extension'] == 'jpg'){
  $jpgs[] = $src_path.'/'.$file;
 }
}
// 判斷圖片總數
if(count($jpgs) != 52){
 echo '圖片總數有誤:'.count($jpgs).'/52'.nl2br("\n");
 die();
}
// 自然排序
usort($jpgs, "strnatcmp");
foreach($g_tasks as $page=>$photos){
 $files = array();
 foreach($photos as $r){
  $files[] = $jpgs[$r];
 }
 $image_all = imagemake($files);
 $filename = $page.'.jpg';
 imagejpeg($image_all, $dst_path.'/'.$filename);
 unset($files);
 echo $filename.nl2br("\n");
}
echo 'ok'.nl2br("\n");
die();
/**
 * 合成圖片
 * @param array $images 本頁圖片集合
 * @return resource 合成后的圖片
 */
function imagemake($files=array()){
 global $g_width,$g_height,$g_models;
 // 合成后的圖片
 $image_all = imageCreatetruecolor($g_width,$g_height);
 // 為真彩色畫布創建白色背景
 $color = imagecolorallocate($image_all, 255, 255, 255);
 imagefill($image_all, 0, 0, $color);
// imageColorTransparent($image_all, $color); // 背景透明
 //function imagecopyresampled ($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h)
 // 排版合成
 $type = count($files);
 switch($type){
  case 2:
   break;
  case 1:
  case 3:
  case 4:
   // 用于合成的圖片集
   $images = array();
   // 修正圖片
   for($i=0;$i$type;$i++){
    $images[] = imagecropper($files[$i],$g_models[$type][$i]['w'],$g_models[$type][$i]['h']);
   }
   // 排版合成
   for($i=0;$i$type;$i++){
    imagecopyresampled($image_all,$images[$i],
     $g_models[$type][$i]['x'],$g_models[$type][$i]['y'],0,0,
     $g_models[$type][$i]['w'],$g_models[$type][$i]['h'],imagesx($images[$i]),imagesy($images[$i]));
   }
   break;
  default:
   break;
 }
 return $image_all;
}
/**
 * 修剪圖片:居中裁剪等比縮放
 * @param $source_path 原圖路徑
 * @param $target_width 目標寬度
 * @param $target_height 目標高度
 * @return bool|resource
 */
function imagecropper($source_path, $target_width, $target_height){
 $source_info = getimagesize($source_path);
 $source_width = $source_info[0];
 $source_height = $source_info[1];
 $source_mime = $source_info['mime'];
 $source_ratio = $source_height / $source_width;
 $target_ratio = $target_height / $target_width;
 switch ($source_mime)
 {
  case 'image/gif':
   $source_image = imagecreatefromgif($source_path);
   break;
  case 'image/jpeg':
   $source_image = imagecreatefromjpeg($source_path);
   break;
  case 'image/png':
   $source_image = imagecreatefrompng($source_path);
   break;
  default:
   return false;
   break;
 }
 // 橫豎構圖不同,旋轉
 if(($target_width-$target_height)*($source_width-$source_height)0){
  // 旋轉
  $source_image = imagerotate($source_image, 90, 0);
  $source_width = $source_info[1]; // [0]
  $source_height = $source_info[0]; // [1]
  $source_ratio = $source_height / $source_width;
 }
 // 源圖過高
 if ($source_ratio > $target_ratio)
 {
  $cropped_width = $source_width;
  $cropped_height = $source_width * $target_ratio;
  $source_x = 0;
  $source_y = ($source_height - $cropped_height) / 2;
 }
 // 源圖過寬
 elseif ($source_ratio  $target_ratio)
 {
  $cropped_width = $source_height / $target_ratio;
  $cropped_height = $source_height;
  $source_x = ($source_width - $cropped_width) / 2;
  $source_y = 0;
 }
 // 源圖適中
 else
 {
  $cropped_width = $source_width;
  $cropped_height = $source_height;
  $source_x = 0;
  $source_y = 0;
 }
 $target_image = imagecreatetruecolor($target_width, $target_height);
 $cropped_image = imagecreatetruecolor($cropped_width, $cropped_height);
 // 裁剪
 imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height);
 // 縮放
 imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $target_width, $target_height, $cropped_width, $cropped_height);
 return $target_image;
}

PS:該代碼應用于命令行模式,且需要注意圖片文件夾路徑。

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP圖形與圖片操作技巧匯總》、《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》及《PHP數學運算技巧總結》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP使用 Imagick 擴展實現圖片合成,圓角處理功能示例
  • php圖片合成方法(多張圖片合成一張)
  • PHP將身份證正反面兩張照片合成一張圖片的代碼
  • PHP基于imagick擴展實現合成圖片的兩種方法【附imagick擴展下載】
  • PHP基于php_imagick_st-Q8.dll實現JPG合成GIF圖片的方法
  • php curl優化下載微信頭像的方法總結
  • PHP仿微信多圖片預覽上傳實例代碼
  • PHP實現微信圖片上傳到服務器的方法示例
  • 微信小程序上傳圖片到php服務器的方法
  • PHP 圖片合成、仿微信群頭像的方法示例

標簽:六安 佛山 樂山 海南 十堰 南寧 定西 迪慶

巨人網絡通訊聲明:本文標題《PHP實現將幾張照片拼接到一起的合成圖片功能【便于整體打印輸出】》,本文關鍵詞  PHP,實,現將,幾張,照片,拼接,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP實現將幾張照片拼接到一起的合成圖片功能【便于整體打印輸出】》相關的同類信息!
  • 本頁收集關于PHP實現將幾張照片拼接到一起的合成圖片功能【便于整體打印輸出】的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    一本一本久久a久久精品综合麻豆| 韩国视频一区二区| 91国产免费观看| 蜜桃视频一区二区| 中文字幕一区二区三区四区不卡| 一本一本大道香蕉久在线精品 | 亚洲精品在线电影| 色8久久精品久久久久久蜜| 成人18视频在线播放| 日本美女一区二区| 亚洲精品国产视频| 日本一区二区三区电影| 欧美人伦禁忌dvd放荡欲情| 成人一区二区三区| 精品一区二区三区在线视频| 亚洲一区二区三区四区在线| 久久免费精品国产久精品久久久久| 91看片淫黄大片一级| 国产一区二三区| 久久电影国产免费久久电影| 亚洲午夜久久久久久久久电影院| 国产精品麻豆99久久久久久| 久久影院电视剧免费观看| 欧美电影在线免费观看| 日本久久电影网| 91精品国产免费久久综合| 欧美日韩精品系列| 国产亚洲精品7777| 国产人久久人人人人爽| 一区二区三区加勒比av| 亚洲激情综合网| 免费观看成人av| 久久精品国产99久久6| 成人高清视频在线| 91精品国产高清一区二区三区蜜臀| 久久蜜臀中文字幕| 亚洲va欧美va人人爽| 亚洲午夜激情网页| 国产伦精品一区二区三区视频青涩| 日本精品免费观看高清观看| 欧美videofree性高清杂交| 精品国产亚洲一区二区三区在线观看| 国产精品丝袜在线| 美女一区二区在线观看| 色综合久久中文综合久久牛| 久久亚洲精精品中文字幕早川悠里 | 91久久精品一区二区| 日韩一区二区三区在线| 日韩一区二区三区电影在线观看| 中文字幕巨乱亚洲| 亚洲欧美一区二区三区孕妇| 一区二区三区日韩欧美精品 | 亚洲777理论| 91伊人久久大香线蕉| 久久久九九九九| 日本成人超碰在线观看| 色综合天天综合在线视频| 欧美在线一区二区| 欧美一区二区三区四区久久| 夜夜爽夜夜爽精品视频| 成人毛片视频在线观看| 日本一区二区三级电影在线观看| 美女视频一区二区三区| 欧美顶级少妇做爰| 日本欧美肥老太交大片| 欧美人体做爰大胆视频| 五月婷婷另类国产| 国产精品一区二区免费不卡| 99精品久久99久久久久| 欧美精品v国产精品v日韩精品 | 欧美一区二区在线播放| 亚洲已满18点击进入久久| 99视频在线观看一区三区| 8x8x8国产精品| 欧美高清在线一区| 波多野结衣亚洲| 亚洲视频一区二区在线| 日本不卡视频在线| 欧美一区二区久久| 久久成人免费日本黄色| 337p粉嫩大胆色噜噜噜噜亚洲| 精一区二区三区| 国产婷婷色一区二区三区| 春色校园综合激情亚洲| 亚洲欧洲国产专区| 在线观看国产一区二区| 日本视频在线一区| 久久久欧美精品sm网站| av成人老司机| 亚洲国产精品久久久久婷婷884 | 色婷婷久久久综合中文字幕 | 国产成人精品免费网站| 欧美精品xxxxbbbb| 国产毛片精品一区| 亚洲日本va午夜在线电影| 欧美性做爰猛烈叫床潮| 国产精品久久久久影院| 国产美女一区二区三区| 亚洲欧洲精品一区二区精品久久久 | 国产在线观看一区二区| 欧美激情综合五月色丁香| 色噜噜久久综合| 精东粉嫩av免费一区二区三区| 日本一区免费视频| 欧美伊人久久大香线蕉综合69| 日本视频一区二区三区| 国产精品毛片久久久久久| 欧美日本韩国一区二区三区视频 | 亚洲va韩国va欧美va| 久久婷婷色综合| 欧美这里有精品| 高清成人免费视频| 久久久久久久久久久久电影| 91丨porny丨蝌蚪视频| 久久精品噜噜噜成人88aⅴ| 国产精品乱人伦一区二区| 欧美一区二区在线播放| 色狠狠一区二区三区香蕉| 国产原创一区二区| 日本在线不卡一区| 一区二区免费看| 国产精品麻豆久久久| 日韩精品在线一区二区| 国产一区二区三区不卡在线观看| 亚洲欧美日韩国产一区二区三区| 久久综合久久综合亚洲| 欧美日本视频在线| 欧美视频在线播放| 色综合中文字幕国产| 精品写真视频在线观看| 日产欧产美韩系列久久99| 亚洲最新视频在线播放| 亚洲青青青在线视频| 欧美国产精品一区| 国产日韩精品视频一区| 久久女同性恋中文字幕| 日韩免费观看高清完整版| 3d动漫精品啪啪一区二区竹菊 | 久久久国产综合精品女国产盗摄| 欧美精品日韩综合在线| 在线观看网站黄不卡| 色欧美日韩亚洲| 在线观看日韩毛片| 在线观看国产精品网站| 91久久国产最好的精华液| 91丨porny丨最新| 色婷婷精品大视频在线蜜桃视频| 成人av资源网站| 99久久精品免费看| 91国偷自产一区二区开放时间| 91蜜桃网址入口| 色欲综合视频天天天| 欧美亚洲国产一卡| 欧美一区二区成人| 26uuu亚洲| 中文字幕日韩av资源站| 亚洲欧美二区三区| 天天综合网 天天综合色| 免费xxxx性欧美18vr| 狠狠色2019综合网| 99综合电影在线视频| 欧美午夜宅男影院| 日韩一级视频免费观看在线| 精品精品国产高清a毛片牛牛 | 91免费视频网| 欧美日韩不卡视频| 久久先锋影音av| 亚洲精品久久久久久国产精华液| 亚洲综合久久av| 国产在线不卡一区| 色综合天天综合给合国产| 在线不卡的av| 中文字幕成人av| 天天综合日日夜夜精品| 国产精品一区二区不卡| 91香蕉视频黄| 日韩视频免费观看高清完整版 | 欧美在线看片a免费观看| 日韩一区二区三区精品视频| 中文字幕第一区二区| 日本欧美久久久久免费播放网| 国产激情偷乱视频一区二区三区| 91精品福利在线| 久久久精品人体av艺术| 亚洲成人激情av| 国产成人精品免费在线| 欧美人妇做爰xxxⅹ性高电影| 精品日韩一区二区| 亚洲一区二区av在线| 国产成人午夜片在线观看高清观看| 91久久线看在观草草青青| 国产日韩三级在线| 日本欧洲一区二区| 精品视频色一区| 欧美日韩高清在线播放| 欧美国产精品久久| 极品少妇一区二区三区精品视频| 色综合视频在线观看| 欧美激情自拍偷拍| 极品少妇xxxx偷拍精品少妇|