setImageFormat($avatarImage->getNumberImages() > 1 ? 'gif' : 'png'); $avatarImage = $avatarImage->coalesceImages(); $avatarOriginalWidth = $avatarImage->getImageWidth(); $avatarOriginalHeight = $avatarImage->getImageHeight(); if ($avatarOriginalWidth > $avatarOriginalHeight) { $avatarWidth = $avatarOriginalWidth * $dimensions / $avatarOriginalHeight; $avatarHeight = $dimensions; } else { $avatarWidth = $dimensions; $avatarHeight = $avatarOriginalHeight * $dimensions / $avatarOriginalWidth; } do { $avatarImage->resizeImage( $avatarWidth, $avatarHeight, Imagick::FILTER_LANCZOS, 0.9 ); $avatarImage->cropImage( $dimensions, $dimensions, ($avatarWidth - $dimensions) / 2, ($avatarHeight - $dimensions) / 2 ); $avatarImage->setImagePage( $dimensions, $dimensions, 0, 0 ); } while ($avatarImage->nextImage()); $avatarImage->deconstructImages()->writeImages($filename = $avatarCropped, true); } catch (Exception $ex) { // report error } } } break; case 'background': if (!$canViewImages && !$userExists) { break; } $backgroundStorage = sprintf('%s/backgrounds/original', MSZ_STORAGE); $filename = sprintf('%s/%d.msz', $backgroundStorage, $userId); mkdirs($backgroundStorage, true); break; } if (empty($filename) || !is_file($filename)) { http_response_code(404); return; } $entityTag = sprintf('W/"{%s-%d-%d}"', $userAssetsMode, $userId, filemtime($filename)); if (!empty($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] === $entityTag) { http_response_code(304); return; } http_response_code(200); header(sprintf('Content-Type: %s', mime_content_type($filename))); header(sprintf('ETag: %s', $entityTag)); echo file_get_contents($filename);