0
我正在使用jquery将数据发布到控制器函数,该函数将位于服务器上的图像进行水印并动态地将其发回。水印功能在我不使用动态输出时起作用,但是当我这样做时,它只是返回一个空白图像,其周围有1像素的灰色边框。CodeIgniter图像水印在使用动态输出时返回空白图像
返回的图像命名正确,并且正确地应用了图像类型标头。这是从网络检查返回狼吞虎咽-DE-对韩国人的第一行:
ÿØÿàJFIFÿþ;CREATOR: gd-jpeg v1.0 (using IJG JPEG v90), quality = 90
实现这一点的任何替代方法,将不胜感激,都在这现在花费数天时间,但收效甚微。如果可能的话,我宁愿保持服务器上的图像不变。
的Java:
$('#body').on('click', '#get_file', function(ev)
{
ev.preventDefault();
var type = 'file';
var uid = $('#file_select').val();
var v1 = retD['res'][0].v1;
var v2 = retD['res'][0].v2;
var v3 = retD['res'][0].v3;
var v4 = retD['res'][0].v4;
$.ajax({
type: 'POST',
url: '<?php echo site_url("Home_controller/drawInfo") ?>',
data: {v1:v1, v2:v2, v3:v3, v4:v4},
dataType: 'html',
success: function(img)
{
$("#i").attr("src", img);
}
});
});
控制器:
function drawInfo()
{
$v1 = $_POST['v1'];
$v2 = $_POST['v2'];
$v3 = $_POST['v3'];
$v4 = $_POST['v4'];
$config['image_library'] = 'gd2';
$config['source_image'] = './img/Test_image.jpg';
$config['wm_text'] = 'v1: ' . $v1 . ' v2: ' . $v2 . ' v3: ' . $v3 . ' v4: ' . $v4;
$config['wm_type'] = 'text';
$config['dynamic_output'] = true;
$config['wm_font_color'] = 'ff0000';
$config['wm_font_path'] = './system/fonts/texb.ttf';
$config['wm_vrt_alignment'] = 'bottom';
$config['wm_hor_alignment'] = 'center';
$config['wm_padding'] = '20';
$this->image_lib->initialize($config);
if(!$this->image_lib->watermark())
{
echo $this->image_lib->display_errors();
}
}
对不起哥们,不工作 - JS忽略该响应(这是静止图像数据,而不是经编码的阵列)我认为这个问题是当启用dynamic_output时,GD/CI直接返回一个图像 - 返回数组甚至不被传递。耻辱,我真的希望这是要做的伎俩:( – Funk247
只需放下$配置['dynamic_output']设置或将其设置为false(我修改了代码) – Zaragoli
是的,它确实创建一个图像在我希望避免的服务器上,但是一旦它被提供给浏览器就删除图像是没有任何意义的。TVM交友,我浪费了几天的时间试图让它工作! – Funk247