Расширение Imagick отлично работает с простым кодом PHP, но не внутри CodeIgniter. В чем может быть возможная проблема, любезное руководство?
Я пробовал код ColorizeImage
function colorizeImage($imagePath, $color, $opacity) {
$imagick = new \Imagick(realpath($imagePath));
$opacity = $opacity / 255.0;
$opacityColor = new \ImagickPixel("rgba(0, 0, 0, $opacity)");
$imagick->colorizeImage($color, $opacityColor);
header("Content-Type: image/jpg");
echo $imagick->getImageBlob();
}
echo colorizeImage('D:/download.png', 'green','50');
Просмотр страницы:
<body>
<label>Input Image</label>
<form method = "post" id = "upload_form" enctype = "multipart/form-data">
<input type='file' name = "userfile" size = "20" onchange = "readURL(this);"/>
</div>
<label>Orignal Image</label><br>
<img id = "blah" src = "#" alt = "" />
<label>Colorized Image </label>
<div id = "result">
</div>
</div>
<input type = "submit" name = "upload" id = "upload" value = "Apply" class = "btn btn-info" />
</form>
<script>
$(document).ready(function(){
$('#upload_form').on('submit', function(e){
e.preventDefault();
if ($('#userfile').val() == '')
{
alert("Please Select the File");
}
else
{
$.ajax({
url:"<?php echo base_url(); ?>Equalize/equalize_image",
//base_url() = http://localhost/tutorial/codeigniter
method:"POST",
data:new FormData(this),
contentType: false,
cache: false,
processData:false,
success:function(data)
{
$('#result').html(data);
}
});
}
});
});
</script>
</body>
без CI: дает отличный результат, но с CI дает следующий результат:
�PNG IHDR2����gAMA���a cHRMz & �����u0�`: �p��Q <��PLTE������������������ �� ٱ� � ժ� ӣ�͛�ǖ�Ð�������� {����tx�pt����lp�hl�cg�y} � [_��� �w {�sw�vx����W [�TX�MQ� | ����HL� @ D�dg�rw�EI����9> �qu�os�38��� �� ����CCC���yyy������TTT���))) ��� &&& ���nnn������ ;; mp�```iii����� ػ����� YYY ??? di���BbKGD�H pHYs��� + tIME�7�� /% 5IDATx����: ӆm6� = 6�H ����R�4m�4 } ���Ϋ�l���-; � $} 3�҂�.�n�F�� | ؇} ؇} Xf���F, �������N��g> � ���T����LB�Q + ��̬B�J�V�U��? ��N ����j�� ^ t��A��� ܈�� F� ٬� zN� ��� "N% $ @ ��! S�5��l676 땭
Как добавить расширение imagick в CodeIgniter (CI) (если это проблема), чтобы оно могло работать в CI?
как предоставить заголовки изображений? Я думал, что воображать не нужно?
Что ж вы повторяете образ, то бинарная правда? Нет, imagick не отправляет заголовки в веб-браузер. - getimageBlob() ... «Возвращает строку, содержащую изображение.». Вы отправляете это в браузер, а не пытаетесь обновить файл? В таком случае используйте: header('Content-Type: image/png');
Опять же, результат такой же. Приведенный выше код дает этот вывод только внутри CodeIgniter.
codeigniter - это просто фреймворк php, он не изменяет сторонние или собственные классы / функции. если этот код работает вне CI, единственное объяснение - ошибка пользователя.
Я спросил того же, в чем может быть ошибка, из-за которой эта программа не работает внутри CI?
@Alex, пожалуйста, ответьте на этот вопрос: stackoverflow.com/questions/51507898/…
похоже на ту же проблему, что и раньше, и она была исправлена
но теперь изображение выровнено и загружено, но не отображается, исправьте?






Я думаю, ваш обходной путь может быть "die ();" функция после echo ();
function colorizeImage($imagePath, $color, $opacity) {
$imagick = new \Imagick(realpath($imagePath));
$opacity = $opacity / 255.0;
$opacityColor = new \ImagickPixel("rgba(0, 0, 0, $opacity)");
$imagick->colorizeImage($color, $opacityColor);
header("Content-Type: image/jpg");
echo $imagick->getImageBlob();
}
echo colorizeImage('D:/download.png', 'green','50');
die;
Но лучше отправлять заголовки с помощью CodeIgniter.
Я думаю, что CodeIgniter использует буфер (ob_start), а затем отправляет заголовки по умолчанию, которые являются text / html, и вы получаете текст вместо изображения. Только не используйте «эхо», верните ответ и добавьте правильные заголовки. https://www.codeigniter.com/userguide3/libraries/output.html
Ваш код должен возвращать двоичный файл изображения. Так что его ничем нельзя окружить. Если он находится внутри действия контроллера, то это действие должно возвращать только это изображение с правильными заголовками и ничего больше. И этого не должно быть в виду.
Пробовал все, проблема в том, что когда я получаю данные на странице просмотра при действии щелчка, он показывает мне текст вместо страницы. Но когда я запускаю страницу контроллера, как «Colorize / colorize_image», она показывает мне правильный вывод, то есть раскрашенное изображение. Теперь в чем проблема? Я отредактировал код и добавил текст страницы просмотра.
Не отправляете заголовки изображений? Не имеет ничего общего с «расширением», его кодовым уровнем. Заголовок / выходной буфер ...