Images ti (ti83 + se dans mon cas) affichés en .jpeg

Contenu du snippet

Ce script transforme une image de calculatrice ti en image jpeg.
Une image de ti a une entête de 74 octets, puis des datas à 1 bit / pixel, on doit donc vérifier si le bit qu'on veut écrire est à 1 ou 0, et on l'écrit...
Au départ, j'ai eu un problème de taille : j'avais fait un décalage de bits, et j'avais vérifié si le nombre était %2 ou non : en clair, je vérifiais en premier les bits de poids faibles, alors qu'il faut commencer par ceux de poids forts...

J'ai deux variables : zoom, et zoomp, zoom correspod à la taille en pixel de pc d'un pixel de ti, et zoomp, la taille en pixel de pc d'un pixel allumé de ti...

Source / Exemple :


<?php
$zoom=4;
$zoomp=2;
$a=file_get_contents('Pic2.8xi');
$img= ImageCreateTrueColor(96*$zoom,63*$zoom);
$white = ImageColorAllocate ($img, 255, 255, 255);
$black = ImageColorAllocate ($img, 0, 0, 0);
$grey = ImageColorAllocate ($img, 210, 210, 210);
ImageFilledRectangle($img, 0, 0, 96*$zoom, 64*$zoom, $white);
$c=74;
$d=$a{$c};
$e=128;
for ($y=0;$y<63;$y++){
	for ($x=0;$x<96;$x++){
		if ($d>=$e){
 			ImageFilledrectangle($img, $x*$zoom, $y*$zoom, $x*$zoom+$zoomp, $y*$zoom+$zoomp, $black);
			$d=$d-$e;
		}else{
			ImageFilledrectangle($img, $x*$zoom, $y*$zoom, $x*$zoom+$zoomp, $y*$zoom+$zoomp, $grey);
		}
		$e=$e/2;
		if ($e==1/2){
			$e=128;
			$c++;
			$d=ord($a{$c});
		}
	}
}

header('content-type: image/jpeg');
imagejpeg($img);
imagedestroy($img);
?>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.