/** * Create a color palette from a file * * @static * @param string $filename * @param string $delimiter * @throws Exception * @return Palette */ public static function fromFile($filename, $delimiter = ',') { $handle = @fopen($filename, 'r'); if (!$handle) { throw new Exception('Failed to open file in loadColorPalette'); } $palette = new Palette(); $idx = 0; while (!feof($handle)) { $buffer = fgets($handle, 4096); $buffer = str_replace(chr(10), '', $buffer); $buffer = str_replace(chr(13), '', $buffer); $values = explode($delimiter, $buffer); $values = array_map('trim', $values); if (count($values) == 3) { $palette->setColor($idx, new Color($values[0], $values[1], $values[2])); $idx++; } elseif (count($values) == 1 && $values[0] !== '') { $palette->setColor($idx, new Color($values[0])); } } return $palette; }