Изменение размера изображения ckfinder
После выбора или загрузки изображения с помощью ckfinder пользователь может изменить ширину и высоту. Я хочу, чтобы оно автоматически изменяло размер изображения на ширину и высоту, заданные пользователем. Это возможно?
Я подумал, что ajax image resizer исправит это, но не сможет заставить его работать. У кого-нибудь есть опыт работы с автоматическим изменением ширины и высоты resize-plugin?
В моем конфигурационном файле ckfinder у меня есть:
include_once "plugins/imageresize/plugin.php";
в config.js у меня есть:
CKFinder.customConfig = function( config )
{
config.extraPlugins = 'imageresize';
};
3 ответа
В прошлом я заранее определял значение автоматического изменения размера для определенной папки в ckFinder, чтобы размер любого изображения, загружаемого пользователем в эту папку, изменялся. Я делаю это, добавляя небольшой код в файл config.php следующим образом:
// This next block sets the default max image size and quality
$config['Images'] = Array(
'maxWidth' => 1600,
'maxHeight' => 1200,
'quality' => 80);
// Here we override those settings for a given folder
if(isset($_GET['currentFolder']) && urldecode($_GET['currentFolder']) == '/some-folder-name/'){
$config['Images']['maxWidth'] = 150;
$config['Images']['maxHeight'] = 150;
}
Я подозреваю, что вы могли бы сделать подобный взлом, возможно, используя значения $_SESSION. Пусть ваш пользователь выберет нужные ему значения авторазмера и сохранит их в своей переменной $_SESSION. Затем в вашем конфигурационном файле найдите значение этого сеанса. Что-то вроде:
if(isset($_SESSION['resize_w']) && isset($_SESSION['resize_h']) ){
$config['Images']['maxWidth'] = $_SESSION['resize_w'];
$config['Images']['maxHeight'] = $_SESSION['resize_h'];
}
Обратите внимание, что вам нужно вызвать session_start() в вашем файле config.php, если вы этого еще не сделали.
Ckeditor не изменяет размер изображения, он только изменяет значение высоты и ширины. вместо изменения размера изображения, установите ширину и высоту по умолчанию, нажимая кнопку "ОК". Здесь я заменяю введенные пользователем значения высоты и ширины значениями высоты и ширины по умолчанию.
CKEDITOR.on('dialogDefinition', function (ev) {
var dialogName = ev.data.name,
dialogDefinition = ev.data.definition;
if (dialogName == 'image') {
var onOk = dialogDefinition.onOk;
dialogDefinition.onOk = function (e) {
var width = this.getContentElement('info', 'txtWidth');
width.setValue('200');//Set Default Width
var height = this.getContentElement('info', 'txtHeight');
height.setValue('200');//Set Default height
onOk && onOk.apply(this, e);
};
}
});
В файле config.ascx измените значение переменной на
Images.MaxWidth = 0;
Images.MaxHeight = 0;
Images.Quality = 100;