| Kopusha |
|
|---|---|
|
Пробую сделать средствами jquery обрезку изображения экстраполя input file. К клиентской частью все просто - поставил что то типа imgareaselect.js и все работает - создается base64 превьюшка и кропиться. Но при загрузке координаты созданные js не играют никакой роли, надо его обрезать фактически средствами php.
<?php
$targ_w = $targ_h = 150;
$jpeg_quality = 90;
$src = 'demo_files/flowers.jpg';
$img_r = imagecreatefromjpeg($src);
$dst_r = ImageCreateTrueColor( $targ_w, $targ_h );
imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],
$targ_w,$targ_h,$_POST['w'],$_POST['h']);
header('Content-type: image/jpeg');
imagejpeg($dst_r, null, $jpeg_quality);
?>
Похожий функционал есть и в ядре и в модуле files, которым я пользуюсь, но как грамотно прикрутить все я не разобрался( Спасибо! |
| jCube Group |
|
|---|---|
|
Проще всего сделать загрузку через ajax, если хотите для начало во временную папку, а после сохранения перенести, а можно сразу в нужную папку. У меня это так:
$('[data-setCrop]').click(function () {
canvas.cropper('getCroppedCanvas').toBlob(function (blob) {
var fd = new FormData();
fd.append('inpname', blob, file.name);
fd.append("uid", $('[name="userid"]').val());
fd.append("x", $('[name="x"]').val());
$.ajax({
url: '/index.php?r=pluginname&a=upload',
data: fd,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function (data) {
data = JSON.parse(data);
data.forEach(el =>{
// some code
console.log(el);
});
}
});
$("#cropperContent").html('');
UIkit.modal("#croper").hide();
});
});
Таким образом я отправляю на сервер уже обрезанную картинку Сделал группу в телеге https://t.me/Cotonti_help если что помогу с вопросами.
|
| Kopusha |
|
|---|---|
|
Спс, попробую. поподробнее куда это все ставить) |
| jCube Group |
|
|---|---|
|
Я вам дал пример JS, его можно в фаил, а чтоб загрузить нужно сделать ajax hook в каком-то плагине (лучше созать свой). Сделал группу в телеге https://t.me/Cotonti_help если что помогу с вопросами.
|