/** * Rotate an image * * LONG * * @access public * @param int The ID of an image * @param int Number of degrees to rotate * @return boolean */ function serendipity_rotateImg($id, $degrees) { global $serendipity; $file = serendipity_fetchImageFromDatabase($id); if (!is_array($file)) { return false; } $admin = ''; if (!serendipity_checkPermission('adminImagesMaintainOthers') && $file['authorid'] != '0' && $file['authorid'] != $serendipity['authorid']) { // A non-admin user may not delete private files from other users. return false; } $infile = $outfile = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $file['path'] . $file['name'] . (empty($file['extension']) ? '' : '.' . $file['extension']); $infileThumb = $outfileThumb = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $file['path'] . $file['name'] . (!empty($file['thumbnail_name']) ? '.' . $file['thumbnail_name'] : '') . (empty($file['extension']) ? '' : '.' . $file['extension']); if ($serendipity['magick'] !== true) { serendipity_rotate_image_gd($infile, $outfile, $degrees); serendipity_rotate_image_gd($infileThumb, $outfileThumb, $degrees); } else { /* Why can't we just all agree on the rotation direction? */ $degrees = 360 - $degrees; /* Resize main image */ $cmd = escapeshellcmd($serendipity['convert']) . ' -rotate ' . serendipity_escapeshellarg($degrees) . ' ' . serendipity_escapeshellarg($infile) . ' ' . serendipity_escapeshellarg($outfile); exec($cmd, $output, $result); if ($result != 0) { echo '<span class="msg_error"><span class="icon-attention-circled"></span> ' . sprintf(IMAGICK_EXEC_ERROR, $cmd, $output[0], $result) . '</span>'; } unset($output, $result); /* Resize thumbnail */ $cmd = escapeshellcmd($serendipity['convert']) . ' -rotate ' . serendipity_escapeshellarg($degrees) . ' ' . serendipity_escapeshellarg($infileThumb) . ' ' . serendipity_escapeshellarg($outfileThumb); exec($cmd, $output, $result); if ($result != 0) { echo '<span class="msg_error"><span class="icon-attention-circled"></span> ' . sprintf(IMAGICK_EXEC_ERROR, $cmd, $output[0], $result) . '</span>'; } unset($output, $result); } $fdim = @getimagesize($outfile); serendipity_updateImageInDatabase(array('dimensions_width' => $fdim[0], 'dimensions_height' => $fdim[1]), $id); return true; }
/** * Rotate an image * * LONG * * @access public * @param int The ID of an image * @param int Number of degrees to rotate * @return boolean */ function serendipity_rotateImg($id, $degrees) { global $serendipity; $file = serendipity_fetchImageFromDatabase($id); if (!is_array($file)) { return false; } $admin = ''; if (!serendipity_checkPermission('adminImagesMaintainOthers') && $file['authorid'] != '0' && $file['authorid'] != $serendipity['authorid']) { // A non-admin user may not delete private files from other users. return false; } $infile = $outfile = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $file['path'] . $file['name'] . '.' . $file['extension']; $infileThumb = $outfileThumb = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $file['path'] . $file['name'] . (!empty($file['thumbnail_name']) ? '.' . $file['thumbnail_name'] : '') . '.' . $file['extension']; if ($serendipity['magick'] !== true) { serendipity_rotate_image_gd($infile, $outfile, $degrees); serendipity_rotate_image_gd($infileThumb, $outfileThumb, $degrees); } else { /* Why can't we just all agree on the rotation direction? */ $degrees = 360 - $degrees; /* Resize main image */ $cmd = escapeshellcmd($serendipity['convert']) . ' -rotate ' . serendipity_escapeshellarg($degrees) . ' ' . serendipity_escapeshellarg($infile) . ' ' . serendipity_escapeshellarg($outfile); exec($cmd, $output, $result); if ($result != 0) { echo '<div class="serendipityAdminMsgError"><img style="width: 22px; height: 22px; border: 0px; padding-right: 4px; vertical-align: middle" src="' . serendipity_getTemplateFile('admin/img/admin_msg_error.png') . '" alt="" />' . sprintf(IMAGICK_EXEC_ERROR, $cmd, $output[0], $result) . '</div>'; } unset($output, $result); /* Resize thumbnail */ $cmd = escapeshellcmd($serendipity['convert']) . ' -rotate ' . serendipity_escapeshellarg($degrees) . ' ' . serendipity_escapeshellarg($infileThumb) . ' ' . serendipity_escapeshellarg($outfileThumb); exec($cmd, $output, $result); if ($result != 0) { echo '<div class="serendipityAdminMsgError"><img style="width: 22px; height: 22px; border: 0px; padding-right: 4px; vertical-align: middle" src="' . serendipity_getTemplateFile('admin/img/admin_msg_error.png') . '" alt="" />' . sprintf(IMAGICK_EXEC_ERROR, $cmd, $output[0], $result) . '</div>'; } unset($output, $result); } $fdim = @getimagesize($outfile); serendipity_updateImageInDatabase(array('dimensions_width' => $fdim[0], 'dimensions_height' => $fdim[1]), $id); return true; }
function g2image_scale($album, $photo, $extension, $method = 'thumb') { global $serendipity; $gallery_base = $this->get_config('gallery_base'); $album_base = $this->get_config('album_base') . "/albums"; $album_abs = $this->get_config('album_abs'); $photo_ext = $extension ? "{$extension}" : "jpg"; $infile = $album_abs . '/albums/' . $album . '/' . $photo . '.' . $photo_ext; if ($method == 'thumb') { $outfile = $album_abs . '/tmp/' . $photo . '.thumb.' . $photo_ext; $size = $this->get_config('thumb_max'); } else { $outfile = $album_abs . '/tmp/' . $photo . '.sized.' . $photo_ext; $size = $this->get_config('popup_max'); } $fdim = @serendipity_getimagesize($infile, '', $extension); if (isset($fdim['noimage'])) { $r = array(0, 0); } else { if ($serendipity['magick'] !== true) { $r = serendipity_resize_image_gd($infile, $outfile, $size); } else { $r = array($size, $size); $newSize = $size . 'x' . $size; if ($fdim['mime'] == 'application/pdf') { $cmd = escapeshellcmd($serendipity['convert']) . ' -antialias -flatten -scale ' . serendipity_escapeshellarg($newSize) . ' ' . serendipity_escapeshellarg($infile) . ' ' . serendipity_escapeshellarg($outfile . '.png'); } else { $cmd = escapeshellcmd($serendipity['convert']) . ' -antialias -scale ' . serendipity_escapeshellarg($newSize) . ' ' . serendipity_escapeshellarg($infile) . ' ' . serendipity_escapeshellarg($outfile); } exec($cmd, $output, $result); if ($result != 0) { echo '<div class="serendipityAdminMsgError"><img style="width: 22px; height: 22px; border: 0px; padding-right: 4px; vertical-align: middle" src="' . serendipity_getTemplateFile('admin/img/admin_msg_error.png') . '" alt="" />' . sprintf(IMAGICK_EXEC_ERROR, $cmd, $output[0], $result) . '</div>'; $r = false; // return failure } else { touch($outfile); } unset($output, $result); } } }