Не хотите через GraphicsMagick попробовать? Намного лучше GD, и быстрее.
вот тут описание:
GraphicsMagick
Цитата (Игорь_Vasinsky @ 8.02.2016 - 20:03) |
TMM00 ты топик читаешь? люди время тратят, пишут тебе решения. |
Цитата (kostr @ 8.02.2016 - 20:06) |
Не хотите через GraphicsMagick попробовать? Намного лучше GD, и быстрее. вот тут описание: GraphicsMagick |
Цитата (Игорь_Vasinsky @ 8.02.2016 - 20:15) |
мда... http://phpforum.su/index.php?act=Print&cli...limin=6&limit=1 первый и последний раз. |
list($w_i, $h_i, $type) = getimagesize($file_input);
if (!$w_i || !$h_i) {
echo 'Невозможно получить длину и ширину изображения';
return;
}
if(file_put_contents($uploaddir.$randomName, $decodedData)) {
// Записываем данные изображения в БД
resizeimg($uploaddir.$randomName, $uploaddir.$randomNameSmall, 100, 75);
$query = "INSERT INTO images (date,catalog,filename,id_news, small) VALUES (NOW(),'$uploaddir','$randomName','$idnew', '$randomNameSmall')";
$loadcontent = mysqli_query($dbc, $query);
}
if(file_put_contents($uploaddir.$randomName, $decodedData)) {
file_put_contents($uploaddir.$randomName, $decodedData)
Цитата (Guest @ 8.02.2016 - 20:59) |
file_put_contents($uploaddir.$randomName, $decodedData) Может быть в $decodedData содержится фигня какая-то? Покажи весь код. |
var $ = jQuery.noConflict();
$(document).ready(function() {
// В dataTransfer помещаются изображения которые перетащили в область div
jQuery.event.props.push('dataTransfer');
// Максимальное количество загружаемых изображений за одни раз
var maxFiles = 30;
// Оповещение по умолчанию
var errMessage = 0;
// Кнопка выбора файлов
var defaultUploadBtn = $('#uploadbtn');
// Массив для всех изображений
var dataArray = [];
//- проверяем принадлежность к определённой странице и проверяем на пустые поля
if(window.location.toString().indexOf('news.php')>0) {
$('#drop-files').css({'display' : 'none'});
$(".content").on('change', function() {
if (!$("#namenew").val() == "") {
if (!$("#datenew").val() == "") {
if (!$("#textnew").val() == "") {
$('#drop-files').css({'display' : 'block'});
}
}
}
});
}
// Область информер о загруженных изображениях - скрыта
$('#uploaded-files').hide();
// Метод при падении файла в зону загрузки
$('#drop-files').on('drop', function(e) {
// Передаем в files все полученные изображения
var files = e.dataTransfer.files;
// Проверяем на максимальное количество файлов
if (files.length <= maxFiles) {
// Передаем массив с файлами в функцию загрузки на предпросмотр
loadInView(files);
} else {
alert('Вы не можете загружать больше '+maxFiles+' изображений!');
files.length = 0; return;
}
});
// При нажатии на кнопку выбора файлов
defaultUploadBtn.on('change', function() {
// Заполняем массив выбранными изображениями
var files = $(this)[0].files;
// Проверяем на максимальное количество файлов
if (files.length <= maxFiles) {
// Передаем массив с файлами в функцию загрузки на предпросмотр
loadInView(files);
// Очищаем инпут файл путем сброса формы
$('#frm').each(function(){
this.reset();
});
} else {
alert('Вы не можете загружать больше '+maxFiles+' изображений!');
files.length = 0;
}
});
// Функция загрузки изображений на предросмотр
function loadInView(files) {
// Показываем обасть предпросмотра
$('#uploaded-holder').show();
// Для каждого файла
$.each(files, function(index, file) {
// Несколько оповещений при попытке загрузить не изображение
if (!files[index].type.match('image.*')) {
if(errMessage == 0) {
$('#drop-files p').html('Эй! только изображения!');
++errMessage
}
else if(errMessage == 1) {
$('#drop-files p').html('Стоп! Загружаются только изображения!');
++errMessage
}
else if(errMessage == 2) {
$('#drop-files p').html("Не умеешь читать? Только изображения!");
++errMessage
}
else if(errMessage == 3) {
$('#drop-files p').html("Хорошо! Продолжай в том же духе");
errMessage = 0;
}
return false;
}
// Проверяем количество загружаемых элементов
if((dataArray.length+files.length) <= maxFiles) {
// показываем область с кнопками
$('#upload-button').css({'display' : 'block'});
}
else { alert('Вы не можете загружать больше '+maxFiles+' изображений!'); return; }
// Создаем новый экземпляра FileReader
var fileReader = new FileReader();
// Инициируем функцию FileReader
fileReader.onload = (function(file) {
return function(e) {
// Помещаем URI изображения в массив
dataArray.push({name : file.name, value : this.result});
addImage((dataArray.length-1));
};
})(files[index]);
// Производим чтение картинки по URI
fileReader.readAsDataURL(file);
});
return false;
}
// Процедура добавления эскизов на страницу
function addImage(ind) {
// Если индекс отрицательный значит выводим весь массив изображений
if (ind < 0 ) {
start = 0; end = dataArray.length;
} else {
// иначе только определенное изображение
start = ind; end = ind+1; }
// Оповещения о загруженных файлах
if(dataArray.length == 0) {
// Если пустой массив скрываем кнопки и всю область
$('#upload-button').hide();
$('#uploaded-holder').hide();
} else if (dataArray.length == 1) {
$('#upload-button span').html("Был выбран 1 файл");
} else {
$('#upload-button span').html(dataArray.length+" файлов были выбраны");
}
// Цикл для каждого элемента массива
for (i = start; i < end; i++) {
// размещаем загруженные изображения
if($('#dropped-files > .image').length <= maxFiles) {
$('#dropped-files').append('<div id="img-'+i+'" class="image" style="background: url('+dataArray[i].value+'); background-size: cover;"> <a href="#" id="drop-'+i+'" class="drop-button">Удалить изображение</a></div>');
}
}
return false;
}
// Функция удаления всех изображений
function restartFiles() {
// Установим бар загрузки в значение по умолчанию
$('#loading-bar .loading-color').css({'width' : '0%'});
$('#loading').css({'display' : 'none'});
$('#loading-content').html(' ');
// Удаляем все изображения на странице и скрываем кнопки
$('#upload-button').hide();
$('#dropped-files > .image').remove();
$('#uploaded-holder').hide();
// Очищаем массив
dataArray.length = 0;
return false;
}
// Удаление только выбранного изображения
$("#dropped-files").on("click","a[id^='drop']", function() {
// получаем название id
var elid = $(this).attr('id');
// создаем массив для разделенных строк
var temp = new Array();
// делим строку id на 2 части
temp = elid.split('-');
// получаем значение после тире тоесть индекс изображения в массиве
dataArray.splice(temp[1],1);
// Удаляем старые эскизы
$('#dropped-files > .image').remove();
// Обновляем эскизи в соответсвии с обновленным массивом
addImage(-1);
});
// Удалить все изображения кнопка
$('#dropped-files #upload-button .delete').click(restartFiles);
//-функция обрезки текста. Принимает строку и кол-во символов
function cutstring(qtxt, col) {
if (qtxt.length > col) {
return qtxt.slice(0, col - 3) + '...';
}
return qtxt;
};
var idnews = 32;
// Загрузка изображений на сервер
$('#upload-button .upload').click(function() {
//-проверяем принадлежность к определённой странице
if(window.location.toString().indexOf('news.php')>0) {
//-получаем данные - обрезаем до нужного размера, в php проблемы с обрезкой (один символ - 2 байта)
var namenew = cutstring($("#namenew").val(), 190);
var datenew = $("#datenew").val();
var groupnew = $("#groupnew").val();
var textnewtext = cutstring($("#textnew").val(), 250);
var textnewcontent = $("#textnew").val();
//-передаем данные скрипту
var idnews = $.post('/restor/uploadnew.php', {namenew, datenew, groupnew, textnewtext, textnewcontent}, function(datanew) {
if(datanew) {
alert ('Новость добавлена');
$("#namenew").val('');
$("#datenew").val('');
$("#groupnew").val('');
$("#textnew").val('');
idnews = datanew;
return idnews;
} else {
alert ('Что-то не так');
}
});
}
// Показываем прогресс бар
$("#loading").show();
// переменные для работы прогресс бара
var totalPercent = 100 / dataArray.length;
var x = 0;
$('#loading-content').html('Загружен '+dataArray[0].name);
// Для каждого файла
$.each(dataArray, function(index, file) {
// загружаем страницу и передаем значения, используя HTTP POST запрос
$.post('/restor/uploadimage.php', dataArray[index], function(data) {
var fileName = dataArray[index].name;
++x;
// Изменение бара загрузки
$('#loading-bar .loading-color').css({'width' : totalPercent*(x)+'%'});
// Если загрузка закончилась
if(totalPercent*(x) == 100) {
// Загрузка завершена
$('#loading-content').html('Загрузка завершена!');
// Вызываем функцию удаления всех изображений после задержки 1 секунда
setTimeout(restartFiles, 1000);
// если еще продолжается загрузка
} else if(totalPercent*(x) < 100) {
// Какой файл загружается
$('#loading-content').html('Загружается '+fileName);
}
//- проверяем принадлежность к определённой странице
if(window.location.toString().indexOf('news.php')>0) {
//-скрываем div'ы
$('#drop-files').css({'display' : 'none'});
$('#file-name-holder').css({'display' : 'none'});
alert (data);
} else {
// Формируем в виде списка все загруженные изображения
// data формируется в upload.php
var dataSplit = data.split(':');
if(dataSplit[1] == 'загружен успешно') {
$('#uploaded-files').append('<li><a href="images/'+dataSplit[0]+'">'+fileName+'</a> загружен успешно</li>');
} else {
$('#uploaded-files').append('<li><a href="images/'+data+'. Имя файла: '+dataArray[index].name+'</li>');
}
}
});
});
// Показываем список загруженных файлов
$('#uploaded-files').show();
return false;
});
// Простые стили для области перетаскивания
$('#drop-files').on('dragenter', function() {
$(this).css({'box-shadow' : 'inset 0px 0px 20px rgba(0, 0, 0, 0.1)', 'border' : '4px dashed #bb2b2b'});
return false;
});
$('#drop-files').on('drop', function() {
$(this).css({'box-shadow' : 'none', 'border' : '4px dashed rgba(0,0,0,0.2)'});
return false;
});
});
<?php
session_start();
// Создаем подключение к серверу $_SERVER[DOCUMENT_ROOT].
define (PATH, $_SERVER[DOCUMENT_ROOT]);
require_once(PATH."/res/db.php");
require_once(PATH."/res/func.php");
if (empty($_SESSION['login']) or empty($_SESSION['id'])) {
exit;
}
else {
// Вытаскиваем необходимые данные
$file = $_POST['value'];
$name = $_POST['name'];
$idnew = strtoint($_SESSION['idnew']);
$datenew = $_SESSION['datenew'];
//- Все загруженные файлы помещаются в эту папку
$updir = PATH.'/images/news/';
$path1 = substr($datenew, 0, 4);
$path2 = substr($datenew, 5, 2);
$path3 = substr($datenew, 8, 2);
$uploaddir = $updir.$path1.'/'.$path2.'/'.$path3.'/';
//- проверяет наличие папки, если её нет - создает.
if (!is_dir($uploaddir)) {
mkdir($uploaddir, 0777, true);
}
// Получаем расширение файла
$getMime = explode('.', $name);
$mime = strtolower(end($getMime));
// Выделим данные
$data = explode(',', $file);
// Декодируем данные, закодированные алгоритмом MIME base64
$encodedData = str_replace(' ','+',$data[1]);
$decodedData = base64_decode($encodedData);
// Вы можете использовать данное имя файла, или создать произвольное имя.
// Мы будем создавать произвольное имя!
$rndName = substr_replace(sha1(microtime(true)), '', 12);
$randomName =$rndName.'.'.$mime;
$randomNameSmall = $rndName.'_small.'.$mime;
//- проверяем данные
$uploaddir = mysql_escape_string($uploaddir);
$randomName = mysql_escape_string($randomName);
$randomNameSmall = mysql_escape_string($randomNameSmall);
$decodedData = mysql_escape_string($decodedData);
// Создаем изображение на сервере
if(file_put_contents($uploaddir.$randomName, $decodedData)) {
// Записываем данные изображения в БД
resizeimg($uploaddir.$randomName, $uploaddir.$randomNameSmall, 100, 75);
$query = "INSERT INTO images (date,catalog,filename,id_news, small) VALUES (NOW(),'$uploaddir','$randomName','$idnew', '$randomNameSmall')";
$loadcontent = mysqli_query($dbc, $query);
}
else {
// Показать сообщение об ошибке, если что-то пойдет не так.
echo "Что-то пошло не так. Убедитесь, что файл не поврежден!";
}
/*
$id_foto = mysql_insert_id($dbc);
$in = $uploaddir.$randomName;
$out = $uploaddir.$randomNameSmall;
resizeimg($in, $out, 100, 75);
$query2 = "UPDATE images SET small='$randomNameSmall' WHERE id='$id_foto'";
$loadcontent2 = mysqli_query($dbc, $query2);
*/
}
?>
<?php
session_start();
define (PATH, $_SERVER[DOCUMENT_ROOT]);
//Главная страница
$title = "Главная страница";
require_once(PATH."/connect.php"); //подключаются db, func, head, header, menu_left
if (empty($_SESSION['login']) or empty($_SESSION['id'])) {
echo '<center><a href="/restor/index.php">Страница входа</a></center>';
}
else {
//начало тела страницы
echo "<section>";?>
<h1>Добавить новость</h1><br>
<div class="content">
<div class="addnew">
<label>Название новости:</label><br>
<input type="text" id="namenew" size="80">
</div>
<div class="addmnew">
<label>Дата новости (в формате дд.мм.гггг):</label><br>
<input type="date" id="datenew" value="<?=date("Y.m.d")?>" >
</div>
<div class="addmnew">
<label>Группа:</label><br>
<select id="groupnew" size="1">
<option disabled>Выберите группу</option>
<?php
$querygroup = "SELECT id, name FROM sadgroup";
$pagegroup = mysqli_query($dbc, $querygroup)
or die ('Ошибка при выполнении запроса к базе данных');
while ($resgroup = mysqli_fetch_array($pagegroup)) {
$idgroup = $resgroup['id'];
$namegroup = $resgroup['name'];
if ($idgroup == 1) {
echo '<option selected value="'.$idgroup.'">'.$namegroup.'</option>';
}
else {
echo '<option value="'.$idgroup.'">'.$namegroup.'</option>';
}
}
?>
</select>
</div>
<div class="addmnew">
<label>Содержание новости:</label><br>
<textarea id="textnew" cols="105" rows="18" placeholder="Введите текст"></textarea>
</div>
<br>
<div id="drop-files" ondragover="return false">
<p>Перетащите изображение сюда</p>
<form id="frm">
<input type="file" id="uploadbtn" multiple />
</form>
</div>
<!-- Область предпросмотра -->
<div id="uploaded-holder">
<div id="dropped-files">
<!-- Кнопки загрузить и удалить, а также количество файлов -->
<div id="upload-button">
<center>
<a href="#" class="upload">Загрузить</a>
<a href="#" class="delete">Удалить все фото</a>
<!-- Прогресс бар загрузки -->
<div id="loading">
<div id="loading-bar">
<div class="loading-color"></div>
</div>
<div id="loading-content"></div>
</div>
</center>
</div>
</div>
</div>
<!-- Список загруженных файлов -->
<div id="file-name-holder">
<ul id="uploaded-files">
<h3>Загруженные файлы</h3>
</ul>
</div>
</div>
<? }
echo "</section>";?>
<script src="/js/javascript.js"></script>
<?
require_once(PATH."/tpl/footer.tpl"); //подвал страницы
?>