get('/{code}', function ($request, $response, $args) { $s = intval($request->getQueryParams()['s'] ?? 300); $s = is_int($s) ? $s : 300; $s = $s <= env('MinPixSize', 60) ? env('MinPixSize', 60) : ($s >= env('MaxPixSize', 2000) ? env('MaxPixSize', 2000) : $s); $m = round(20 * 2 / 300); $m = $m <= 5 ? 5 : ($m >= 300 ? 300 : $m); $image = @Datamatrix::factory() ->setSize($s) ->setMargin($m) ->setCode($args['code'])->getDatamatrixPngData(); $body = $response->getBody(); $body->write($image); $response = $response->withHeader("Content-type", 'image/png'); $response = $response->withHeader("Cache-Control", 'no-cache'); $response = $response->withHeader("Last-Modified", gmdate('D, d M Y H:i:s') . ' GMT'); return $response; });