09.09.2024
Aldona, Jakub, Sergiusz, Piotr, Augustyna, Aureliusz, Dionizy
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.
WSPARCIE / FORUM
CODE : php
/**
* convert images to base64 string or file
* copyright : (c) 2013 Andrzej Krokos
* version PHP : 5
* author : shreker983@gmail.com
* licence : GPL
*
*/
class img_base64
{
// back to form
function show_back()
{
echo '<p align="center"><button class="przycisk" onclick="window.location.href =''.$_SERVER["PHP_SELF"].''">RETURN</button></p>';
}
// return file size
function file_size($size)
{
return round($size/1024/1024, 2);
}
// show and generate img code
function show_img_code($ext, $size, $imgcode, $namefile)
{
echo '<?php '."\r\n";
echo "\r\n";
echo ' // generate : '.date('Y-m-d H:i:s').' from oryginal file : '.$namefile.''."\r\n";
echo "\r \n " ;
echo ' function image()' . "\r \n " ;
echo ' {' . "\r \n " ;
echo ' header("Content-type: image/' . $ext . '");' . "\r \n " ;
echo ' header("Content-length: ' . $size . '");' . "\r \n " ;
echo ' echo base64_decode("' . $imgcode . '");' . "\r \n " ;
echo '}' . "\r \n " ;
echo "\r \n " ;
echo 'if (array_key_exists("image", $_REQUEST) && $_REQUEST["image"] == "img") { image(); die(); }' . "\r \n " ;
echo "\r \n " ;
echo '?>' . "\r \n " ;
echo "\r \n " ;
echo '<img src="<?php echo $_SERVER["PHP_SELF"]; ?>?image=img" />' ;
}
// show upload image form
function show_form( )
{
echo '<table id="" width="500px" align="center">' ;
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>' ;
echo '<tr align="center"><td align="center"><form id="" name="" action="" enctype="multipart/form-data" method="post">' ;
echo '<input type="file" name="uploadfile" size="35"></td></tr>' ;
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">' ;
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">' ;
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>' ;
echo '<tr align="center"><td align="center"><input type="hidden" name="submit" value="encode">' ;
echo '<input class="przycisk" type="submit" name="send" value="EXECUTE">' ;
echo '</form></td></tr>' ;
echo '</table>' ;
}
// execute & generate img code
function execute_code( )
{
// set data
$this -> ext = array ( 'gif' , 'jpg' , 'jpeg' , 'png' ) ; // acceptable ext image
$this -> typy_mime = array ( 'image/gif' , 'image/jpg' , 'image/jpeg' , 'image/png' ) ; // acceptable mime type images files
$this -> max_wielkosc = 1; // max size file
{
if ( $_FILES [ 'uploadfile' ] [ 'error' ] > 0)
{
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>' ;
$this -> show_back ( ) ;
}
{
echo '<p align="center"><font style="font-family:arial; color:red; font-size:12px; font-weight:bold;">NO FILE !</font></p>' ;
$this -> show_back ( ) ;
}
elseif ( $this -> file_size ( $_FILES [ 'uploadfile' ] [ 'size' ] ) >= $this -> max_wielkosc )
{
echo '<p align="center"><font style="font-family:arial; color:red; font-size:12px; font-weight:bold;">TOO BIG PICTURE !</font></p>' ;
$this -> show_back ( ) ;
}
else if ( ! in_array ( $_FILES [ 'uploadfile' ] [ 'type' ] , $this -> typy_mime ) )
{
echo '<p align="center"><font style="font-family:arial; color:red; font-size:12px; font-weight:bold;">ERROR FILE !</font></p>' ;
$this -> show_back ( ) ;
}
{
if ( preg_match ( '@(.*)\.(' . implode ( '$|' , $this -> ext ) . '$' . ')@i' , $_FILES [ 'uploadfile' ] [ 'name' ] ) )
{
$ext = pathinfo ( $_FILES [ 'uploadfile' ] [ 'name' ] , PATHINFO_EXTENSION
) ;
$extff = fread ( $file , $size ) ;
$imgcode = chunk_split ( $encimg , $_POST [ 'linelength' ] , "'.'" ) ;
{
header ( 'Content-type: application/x-httpd-php' ) ;
header ( 'Content-Disposition: attachment; filename=image.php' ) ;
$this -> show_img_code ( $ext , $size , $imgcode , $namefile ) ;
}
{
$_POST [ 'linelength' ] += 5;
echo '<table id="" width="500px" align="center">' ;
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>' ;
echo '<tr align="center"><td align="center"><form id="" name="">' ;
echo '<textarea name="t" style="width:100%; height:250px; font-family:arial; color:black; font-size:12px; font-weight:normal">' ;
$this -> show_img_code ( $ext , $size , $imgcode , $namefile ) ;
echo '</textarea></td></tr>' ;
echo '<tr align="center"><td align="right"><input class="przycisk" type="button" value="SELECT ALL" onclick="t.focus(); t.select();">' ;
echo '</form></td></tr>' ;
echo '</table>' ;
}
$this -> show_back ( ) ;
}
else
{
echo '<p align="center"><font style="font-family:arial; color:red; font-size:12px; font-weight:bold;">ERROR FILE !</font></p>' ;
$this -> show_back ( ) ;
}
}
}
else
{
$this -> show_form ( ) ;
}
}
}
// example
$img = new img_base64( ) ;
$img -> execute_code ( ) ;
online : 1 użytkownik, dziś odwiedziło : 9 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).
powered by scms © 2004 - 2024
design by sid