G1rFxiTools/PicViewer/converter.php

86 lines
2.1 KiB
PHP
Raw Normal View History

2019-12-26 17:22:34 +01:00
<?php
ini_set("display_errors",1);
if(isset($_FILES['file']['name']) && !empty($_FILES['file']['name']))
{
require_once('../common/functions.php');
//detection du format
$format = strtolower(substr($_FILES['file']['name'],-3));
//get size
if(!is_numeric($_POST['size']) || $_POST['size']<1 || $_POST['size']>9)
{
$size=3;
}
else $size=$_POST['size'];
//get colors
if(isset($_POST['blackAndWhite']) && $format=="fxi")
{
$colors =array(array(0,0,0),array(0, 0, 0),array(0, 0, 0),array(255, 255, 255)) ;
//0 = rouge
//1 = bleu
//2 = vert
//3 = white
}
elseif($format=="fxi")
// else
{
$colors =array(array(255,0,0),array(0, 0, 255),array(0, 128, 0),array(255, 255, 255));
//0 = rouge => black
//1 = bleu => black
//2 = vert => black
//3 = white => white
}
else
{
$colors =array(array(0,0,0),array(255, 255, 255),array(255, 255, 255),array(255, 255, 255)) ;
}
//getfile
$InFile = file_get_contents($_FILES['file']['tmp_name']);
$InFileSize = strlen($InFile);
if($format == 'fxi')
{
//decode fxi & to hex
$InFile = fxiDecode($InFile);
//search for pic block
for($i = 0 ; $i < $InFileSize*2; $i+=2)
{
if(substr($InFile, $i, 6) == "494d47" && substr($InFile,$i+8,4)=="5043")
{
$pics ="";
for($j = $i+96 ; $j < $i+8224+96; $j++)
{
$pics.=$InFile[$j];
}
$picsArray = getFxiPic($pics);
writePics($picsArray, $colors, $size);
exit;
}
}
}
elseif($format == 'g1r' || $format == 'g1m' || $format == 'g2m')
{
//to hex
$InFile = bin2hex($InFile);
//search for pic block
for($i = 0 ; $i < $InFileSize*2; $i+=2)
{
if(substr($InFile, $i, 16) == "5049435455524520" && substr($InFile,$i+18,46)=="00000000000000000000016d61696e0000000050494354" && substr($InFile,$i+66,22)=="0000000700000800000000")
{
$pics ="";
for($j = $i+88 ; $j < $i+4096+88; $j++)
{
$pics.=$InFile[$j];
}
$picsArray = getG1mPic($pics);
writePics($picsArray, $colors, $size);
exit;
}
}
echo "Aucune image trouvée";exit;
}
}
else
{
header('Location : ../');
}
?>