public GreyImage openHuf(String str)
	{
		//On ouvre le fichier via Reader qui nous donne les tableaux de bytes
		Reader r = new Reader(str);
		
		//Reconstruction de la table de correspondance
		byte[][] tableBytes = r.getArbre();
		ArrayList<TableEntry> table = new ArrayList<TableEntry>();
		for(int i=0; i<tableBytes.length; i++)
		{
			table.add(TableEntry.fromBytes(tableBytes[i]));
		}
		
		//On reconstruit l'image via la table et la séquence de bytes
		int dimX = r.getSizeX();
		int dimY = r.getSizeY();
		byte[] bytes = r.getSequence();

		//On transforme le tableau de bytes en String simple
		String img = StringByte.toString(bytes).toString();
		
		short[] values = new short[dimX*dimY];
		
		int index = 0; //Position courante dans le String de l'image
		
		//Pour chaque pixel
		for(int i=0; (i<dimX*dimY) && index < img.length(); i++)
		{
			short value = 0;
			String code = "";
			//On cherche le code à utiliser
			for(TableEntry entry : table)
			{
				if((index + entry.code.length()) < img.length() &&  img.subSequence(index, index + entry.code.length()).equals(entry.code))
				{
					value = entry.value;
					code = entry.code;
					break;
				}
					
			}

			index+=code.length(); //On continue le parcours
			values[i] = value;
			
		}
		

		
		return new GreyImage(dimX, dimY, values);
	}