【发布时间】:2018-07-23 22:25:02
【问题描述】:
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�qu�os�38�� �������CCC���yyy������TTT��)))...&&&��nnn������;;;mp�```iii�� ����������YYY???di����BbKGD�H pHYs���+tIME�7��/%5IDATx��ic�:ӆ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不需要?
-
嗯,你是在呼应一个图像,那么二进制是真的吗?不,imagick 不会将标头发送到 Web 浏览器。 -
getimageBlob()... "返回一个包含图像的字符串。"。您将其发送到浏览器,而不是尝试更新文件?如果是这样,请使用:header('Content-Type: image/png'); -
再次给出相同的输出。上面提供的代码仅在 CodeIgniter 中提供此输出。
-
codeigniter 只是一个 php 框架,它不会修改第三方或原生类/函数。如果此代码在 CI 之外工作,那么唯一的解释是用户错误
标签: php codeigniter imagick