krokos.net.pl
Masz wyłączoną obsługę javascript, niektóre funkcje na stronie mogą działać nieprawidłowo
18.04.2024
Apoloniusz, Bogusława, Gościsława, Alicja, Flawiusz, Bogusław
dziś jest : 109 dzień roku wschód słońca o : 5:46 , zachód o : 19:42 koniec roku za : 256 dni
Programowanie PHP - Zakodowanie Plików Graficznych Algorytmem Base64
Jest to klasa pozwalająca na zakodowanie plików graficznych o rozszerzeniach takich jak gif, jpg i png algorytmem base64.
Po co to komu ? A choćby na zapisanie pliku w formie cyfrowej do bazy. Niekiedy bardziej praktyczne jest wyświetlanie grafiki z postaci cyfrowej niż z pliku graficznego. Oczywiście musimy pamiętać, że im wiekszy jest oryginalny plik graficzny tym też większa będzie jego objętość w formie cyfrowej.
Klasa pozwala na przetworzenie obrazka do postaci kodu lub wygenerowanie gotowego pliku, z dodatkową opcją długości znaków w linii.
CODE : php
  1. /**
  2.  * convert images to base64 string or file
  3.  * copyright : (c) 2013 Andrzej Krokos
  4.  * version PHP : 5
  5.  * author : shreker983@gmail.com
  6.  * licence : GPL
  7.  *
  8. */
  9.  
  10. class img_base64
  11. {
  12.     // back to form
  13.     function show_back()
  14.     {
  15.         echo '<p align="center"><button class="przycisk" onclick="window.location.href =''.$_SERVER["PHP_SELF"].''">RETURN</button></p>';
  16.     }
  17.     // return file size
  18.     function file_size($size)
  19.     {
  20.         return round($size/1024/1024, 2);
  21.     }
  22.     // show and generate img code
  23.     function show_img_code($ext, $size, $imgcode, $namefile)
  24.     {
  25.         echo '<?php'."\r\n";
  26.        echo "\r\n";
  27.        echo '// generate : '.date('Y-m-d H:i:s').' from oryginal file : '.$namefile.''."\r\n";
  28.         echo "\r\n";
  29.         echo '  function image()'."\r\n";
  30.         echo '  {'."\r\n";
  31.         echo '      header("Content-type: image/'.$ext.'");'."\r\n";
  32.         echo '      header("Content-length: '.$size.'");'."\r\n";
  33.         echo '      echo base64_decode("'.$imgcode.'");'."\r\n";
  34.         echo '}'."\r\n";
  35.         echo "\r\n";
  36.         echo 'if (array_key_exists("image", $_REQUEST) && $_REQUEST["image"] == "img") { image(); die(); }'."\r\n";
  37.         echo "\r\n";
  38.         echo '?>'."\r\n";
  39.         echo "\r\n";
  40.         echo '<img src="<?php echo $_SERVER["PHP_SELF"]; ?>?image=img" />';
  41.     }
  42.     // show upload image form
  43.     function show_form()
  44.     {
  45.         echo '<table id="" width="500px" align="center">';
  46.         echo '<tr align="center"><td align="center"><p style="font-family:arial; color:black; font-size:12px; font-weight:bold;">select an image file to encode<br />(acceptable formats : jpg, gif, png)</p></td></tr>';
  47.         echo '<tr align="center"><td align="center"><form id="" name="" action="" enctype="multipart/form-data" method="post">';
  48.         echo '<input type="file" name="uploadfile" size="35"></td></tr>';      
  49.         echo '<tr align="center"><td align="center"><font style="font-family:arial; color:black; font-size:12px; font-weight:normal;">get code: </font><input type="radio" value="cg" checked name="pts">';
  50.         echo '<font style="font-family:arial; color:black; font-size:12px; font-weight:normal; padding: 0px 0px 0px 10px;">show code: </font><input type="radio" value="cs" name="pts">';
  51.         echo '<font style="font-family:arial; color:black; font-size:12px; font-weight:normal; padding: 0px 0px 0px 10px;">characters / line: </font><input type="text" name="linelength" value="50" maxlength="4" style="width:40px; text-align:center;" /></td></tr>';
  52.         echo '<tr align="center"><td align="center"><input type="hidden" name="submit" value="encode">';
  53.         echo '<input class="przycisk" type="submit" name="send" value="EXECUTE">';
  54.         echo '</form></td></tr>';
  55.         echo '</table>';    
  56.     }
  57.     // execute & generate img code
  58.     function execute_code()
  59.     {
  60.         // set data
  61.         $this->ext = array('gif', 'jpg', 'jpeg', 'png'); // acceptable ext image
  62.         $this->typy_mime = array('image/gif', 'image/jpg', 'image/jpeg', 'image/png'); // acceptable mime type images files
  63.         $this->max_wielkosc = 1; // max size file
  64.  
  65.         if (array_key_exists('submit', $_POST))
  66.         {          
  67.                 if ($_FILES['uploadfile']['error'] > 0)
  68.                 {
  69.                 echo '<p align="center"><font style="font-family:arial; color:red; font-size:12px; font-weight:bold;">ERROR : </font><font style="font-family:arial; color:red; font-size:12px; font-weight:bold;">'.$_FILES['uploadfile']['error'].'</font></p>';
  70.                 $this->show_back();
  71.                 }    
  72.             else if (($_FILES['uploadfile']['name'] == 'none') or (!file_exists(htmlspecialchars(strip_tags(addslashes($_FILES['uploadfile']['tmp_name']))))))
  73.             {
  74.                         echo '<p align="center"><font style="font-family:arial; color:red; font-size:12px; font-weight:bold;">NO FILE !</font></p>';
  75.                 $this->show_back();
  76.             }
  77.                 elseif ($this->file_size($_FILES['uploadfile']['size']) >= $this->max_wielkosc)
  78.                 {
  79.                         echo '<p align="center"><font style="font-family:arial; color:red; font-size:12px; font-weight:bold;">TOO BIG PICTURE !</font></p>';
  80.                 $this->show_back();    
  81.                 }
  82.             else if(!in_array($_FILES['uploadfile']['type'], $this->typy_mime))
  83.             {
  84.                 echo '<p align="center"><font style="font-family:arial; color:red; font-size:12px; font-weight:bold;">ERROR FILE !</font></p>';
  85.                 $this->show_back();        
  86.             }
  87.             else if (htmlspecialchars(strip_tags(addslashes($_FILES['uploadfile']['tmp_name']))) != '')
  88.             {
  89.                 if (preg_match('@(.*)\.('.implode('$|', $this->ext).'$'.')@i', $_FILES['uploadfile']['name']))
  90.                 {
  91.                         $file = fopen(htmlspecialchars(strip_tags(addslashes($_FILES['uploadfile']['tmp_name']))), 'rb');
  92.                         $size = filesize(htmlspecialchars(strip_tags(addslashes($_FILES['uploadfile']['tmp_name']))));
  93.                     $ext = pathinfo($_FILES['uploadfile']['name'], PATHINFO_EXTENSION);
  94.                     $extff = fread($file, $size);
  95.                         fclose($file);
  96.                         $encimg = base64_encode($extff);
  97.                         $imgcode = chunk_split($encimg, $_POST['linelength'], "'.'");
  98.                     $namefile = htmlspecialchars(strip_tags(addslashes($_FILES['uploadfile']['name'])));
  99. ;                    if (array_key_exists('pts', $_POST) && $_POST['pts'] == 'cg')
  100.                     {
  101.                         header('Content-type: application/x-httpd-php');
  102.                         header('Content-Disposition: attachment; filename=image.php');
  103.                         $this->show_img_code($ext, $size, $imgcode, $namefile);
  104.                         die();
  105.                     }
  106.                     else if (array_key_exists('pts', $_POST) && $_POST['pts'] == 'cs')
  107.                     {
  108.                         $_POST['linelength']+=5;
  109.                         echo '<table id="" width="500px" align="center">';
  110.                         echo '<tr align="center"><td align="left"><p style="font-family:arial; color:black; font-size:12px; font-weight:bold;">copy the code below :</p></td></tr>';
  111.                         echo '<tr align="center"><td align="center"><form id="" name="">';
  112.                         echo '<textarea name="t" style="width:100%; height:250px; font-family:arial; color:black; font-size:12px; font-weight:normal">';
  113.                         $this->show_img_code($ext, $size, $imgcode, $namefile);
  114.                         echo '</textarea></td></tr>';
  115.                         echo '<tr align="center"><td align="right"><input class="przycisk" type="button" value="SELECT ALL" onclick="t.focus(); t.select();">';
  116.                         echo '</form></td></tr>';
  117.                         echo '</table>';
  118.                     }
  119.                     $this->show_back();
  120.                 }
  121.                 else
  122.                 {
  123.                     echo '<p align="center"><font style="font-family:arial; color:red; font-size:12px; font-weight:bold;">ERROR FILE !</font></p>';
  124.                     $this->show_back();
  125.                 }
  126.             }
  127.         }
  128.         else
  129.         {
  130.             $this->show_form();
  131.         }
  132.     }  
  133. }
  134.  
  135. // example
  136. $img = new img_base64();
  137. $img->execute_code();
pobierz plik ( rozmiar : 2.07 kB )
ocena : 4.9(oddano : 9 głosów)
online : 1 użytkownik, dziś odwiedziło : 25 osób
Zgodnie z nowelizacją ustawy o Prawie Telekomunikacyjnym informujemy, że strona krokos.net.pl w swoim działaniu korzysta z zapisywanych informacji w postaci ciasteczek (ang. cookies).
Pomagam - Fundacja TVN
powered by scms © 2004 - 2024 design by sid