* @ingroup Media
*/
+use MediaWiki\Shell\Shell;
+
/**
* JPEG specific handler.
* Inherits most stuff from BitmapHandler, just here to do the metadata handler differently.
const SRGB_EXIF_COLOR_SPACE = 'sRGB';
const SRGB_ICC_PROFILE_DESCRIPTION = 'sRGB IEC61966-2.1';
- function normaliseParams( $image, &$params ) {
+ public function normaliseParams( $image, &$params ) {
if ( !parent::normaliseParams( $image, $params ) ) {
return false;
}
return $res;
}
- function getScriptParams( $params ) {
+ protected function getScriptParams( $params ) {
$res = parent::getScriptParams( $params );
if ( isset( $params['quality'] ) ) {
$res['quality'] = $params['quality'];
return $res;
}
- function getMetadata( $image, $filename ) {
+ public function getMetadata( $image, $filename ) {
try {
$meta = BitmapMetadataHandler::Jpeg( $filename );
if ( !is_array( $meta ) ) {
$rotation = ( $params['rotation'] + $this->getRotation( $file ) ) % 360;
if ( $wgJpegTran && is_executable( $wgJpegTran ) ) {
- $cmd = wfEscapeShellArg( $wgJpegTran ) .
- " -rotate " . wfEscapeShellArg( $rotation ) .
- " -outfile " . wfEscapeShellArg( $params['dstPath'] ) .
- " " . wfEscapeShellArg( $params['srcPath'] );
- wfDebug( __METHOD__ . ": running jpgtran: $cmd\n" );
- $retval = 0;
- $err = wfShellExecWithStderr( $cmd, $retval );
- if ( $retval !== 0 ) {
- $this->logErrorForExternalProcess( $retval, $err, $cmd );
-
- return new MediaTransformError( 'thumbnail_error', 0, 0, $err );
+ $command = Shell::command( $wgJpegTran,
+ '-rotate',
+ $rotation,
+ '-outfile',
+ $params['dstPath'],
+ $params['srcPath']
+ );
+ $result = $command
+ ->includeStderr()
+ ->execute();
+ if ( $result->getExitCode() !== 0 ) {
+ $this->logErrorForExternalProcess( $result->getExitCode(),
+ $result->getStdout(),
+ $command
+ );
+
+ return new MediaTransformError( 'thumbnail_error', 0, 0, $result->getStdout() );
}
return false;
return false;
}
- $cmd = wfEscapeShellArg( $wgExiftool,
+ $result = Shell::command(
+ $wgExiftool,
'-EXIF:ColorSpace',
'-ICC_Profile:ProfileDescription',
'-S',
'-T',
$filepath
- );
-
- $output = wfShellExecWithStderr( $cmd, $retval );
+ )
+ ->includeStderr()
+ ->execute();
// Explode EXIF data into an array with [0 => Color Space, 1 => Device Model Desc]
- $data = explode( "\t", trim( $output ) );
+ $data = explode( "\t", trim( $result->getStdout() ) );
- if ( $retval !== 0 ) {
+ if ( $result->getExitCode() !== 0 ) {
return false;
}
return false;
}
- $cmd = wfEscapeShellArg( $wgExiftool,
+ $command = Shell::command( $wgExiftool,
'-overwrite_original',
'-icc_profile<=' . $profileFilepath,
$filepath
);
-
- $output = wfShellExecWithStderr( $cmd, $retval );
-
- if ( $retval !== 0 ) {
- $this->logErrorForExternalProcess( $retval, $output, $cmd );
+ $result = $command
+ ->includeStderr()
+ ->execute();
+
+ if ( $result->getExitCode() !== 0 ) {
+ $this->logErrorForExternalProcess( $result->getExitCode(),
+ $result->getStdout(),
+ $command
+ );
return false;
}