Imagick 在 php CodeIgniter 中不起作用



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 Qqu 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 中工作?

我认为您的解决方法可能是"die();" 回声()之后的函数;

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),然后发送默认标头,这些标头是文本/html,您将获得文本而不是图像。只是不要使用"echo"返回响应并添加正确的标头。https://www.codeigniter.com/userguide3/libraries/output.html

代码应返回二进制图像文件。所以你不能用任何东西包围它。 如果它位于控制器的操作内,则此操作应仅返回具有正确标头的此图像,而不返回任何其他图像。它不应该出现在视野中。

相关内容

  • 没有找到相关文章

最新更新