2017年12月28日 星期四

CODE_review 巧用 pclzip

pclzip 位於 http://www.phpconcept.net/pclzip/
可以壓縮/解壓縮zip檔

1. opf檔的預視

  $archive = new PclZip($path.'/'.$file);
  header("Content-type: image/png");
  $list = $archive->extract(PCLZIP_OPT_BY_NAME,'Thumbnails/thumbnail.png' ,PCLZIP_OPT_EXTRACT_IN_OUTPUT);

PCLZIP_OPT_EXTRACT_IN_OUTPUT 這個選項讓資料直接輸出,這樣就可以用

<img scr = '....php?file=...>方式顯示預視圖


2.如果writer只有一張圖
 $archive = new PclZip($path.'/'.$file);

  $list = $archive->listContent();
  $filename;
  for ($i=0; $i<sizeof($list); $i++) {
    if (substr($list[$i]['filename'],0,8)=='Pictures') {
      $filename = $list[$i]['filename'];
      break;
    }  
  }
  if ($filename) {
     header("Content-type: image/png");
     $list = $archive->extract(PCLZIP_OPT_BY_NAME,$filename ,PCLZIP_OPT_EXTRACT_IN_OUTPUT);
  }
  類似的方法可以把圖顯示出來

3. 顯示sb2檔中的程式碼
 $archive = new PclZip($path.'/'.$file);

  $json = $archive->extract(PCLZIP_OPT_BY_NAME,'project.json' ,PCLZIP_OPT_EXTRACT_AS_STRING);
 
  $obj = json_decode($json[0]['content']);
  foreach($obj->{'children'} as $child) {
    echo $child->{'objName'} ;
    echo ':<br>';
    foreach ($child->{'scripts'} as $script) {
       showoneblock($script[2]);
       echo "<br><br>";
    }      
  }

function showoneblock($block) {
   foreach($block as $b) {
     foreach($b as $c) {
        if (is_array($c)) {
          echo '{<br>';
          showoneblock($c);
          echo '}';
        } else {
          echo $c.'&nbsp;';
        }
     }
     echo "<br>";
   }
}






沒有留言:

張貼留言