Resize images when uploading

Resize images when uploading

Events: OnFileManagerUpload

<?php if ($modx->event->name != 'OnFileManagerUpload') {return;} $config = array( 'w' => 1920, 'h' => 1200, 'zc' => 0, 'far' => 0, 'q' => 95 ); if(!isset($files) || !is_array($files) || !isset($source)){ return; } if(isset($scriptProperties["phpthumb_config"]) && !empty($scriptProperties["phpthumb_config"])){ $propConfig = $modx->fromJSON($scriptProperties["phpthumb_config"]); if(is_array($propConfig)){ $config = array_merge($config, $propConfig); } } $extensions = array_map("trim", explode(',', $modx->getOption('upload_images'))); $basePath = rtrim($source->getBasePath(), "/") . "/"; $baseUrl = trim($source->getBaseUrl(), "/") . "/"; $directory = trim($directory, "/") . "/"; $basePath = str_replace("//", "/", $basePath . $directory); $baseUrl = str_replace("//", "/", $baseUrl . $directory); $phpThumbOnProps = array( "assetsPath" => $modx->getOption('base_path'), "assetsUrl" => $modx->getOption('base_url'), "cacheDir" => $modx->getOption('assets_path') . "cache_img_mgr", "noimage" => "" ); $componentPath = (string)$modx->getOption('phpthumbon.core_path', null, $modx->getOption('core_path').'components/phpthumbon/'); $phpThumbOn = $modx->getService("phpthumbon", "phpThumbOn", $componentPath.'model/phpthumbon/', $phpThumbOnProps); if(!($phpThumbOn instanceof phpThumbOn)){ return; } foreach($files as $file){ if ($file['error'] != 0) { continue; } $name = $file['name']; $fileBasePath = $basePath . $name; $fileBaseUrl = $baseUrl . $name; $ext = strtolower(array_pop(explode(".", $name))); if (in_array($ext, $extensions)) { $sizes = getimagesize($fileBasePath); $format = substr($sizes['mime'], 6); if ($sizes[0] > $config['w'] || $sizes[1] > $config['h']) { if ($sizes[0] < $config['w']) { $config['w'] = $sizes[0]; } if ($sizes[1] < $config['h']) { $config['h'] = $sizes[1]; } $phpThumbOnProps["input"] = $fileBaseUrl; $phpThumbOnProps["options"] = $config; $resized = $phpThumbOn->run($phpThumbOnProps); if(!empty($resized)){ rename(MODX_BASE_PATH . trim($resized, "/"), $fileBasePath); } } } }
Fill out the brief and get an approximate development cost
Website Brief Logo brief Print brief