从图像复制功能中获取胡言乱语,

时间:2012-12-10 17:35:04

标签: php

Hia,我刚刚制作了代码:

<?php
$ur = $user['Skin'];

$filename = "img/Skins/" . $ur;
list($w, $h, $type, $attr) = getimagesize($filename);
$img = imagecreatefrompng($filename); 
$src_im = imagecreatefrompng($filename);
$src_x = '30';   // begin x
$src_y = '45';   // begin y
$src_w = '40'; // width
$src_h = '35'; // height
$dst_x = '0';   // destination x
$dst_y = '0';   // destination y

$dst_im = imagecreatetruecolor($src_w, $src_h);
$white = imagecolorallocate($dst_im, 255, 255, 255);
imagefill($dst_im, 0, 0, $white);

imagecopy($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h);

?>
<img src="<?php print_r(imagepng($dst_im)); ?>"/>

这应该做的是获取图像“皮肤”并剪掉头部,所以我的形象:

<img src="<?php print_r(imagepng($dst_im)); ?>"/>

应该只是皮肤的头部。但是,我得到了这种胡言乱语:

  

ù¬åä)BðÔ€Í〜Í

我该怎么做,我该如何解决?

谢谢!

3 个答案:

答案 0 :(得分:1)

解决方案是使用您的php脚本作为src标记的<img>属性:

<强> yourScript.php

...

$im = imagepng($dst_im);

header('Content-Type: image/png');

imagepng($im);
imagedestroy($im);

<强>标记

<img src="yourScript.php" alt="Some alt text">

答案 1 :(得分:1)

@ moonwave99答案是对的。 但是,如果你想从imagecopy函数获取图像base64数据,这是我所做的一个简单的例子。

我已经用它在图片上创建了水印。

<?php
function image_data_base64() {
    $stamp = imagecreatefrompng('watermark.png');
    $im = imagecreatefrompng('picture.png');
    imagecopy($im, $stamp, imagesx($im) - imagesx($stamp) - 15, 15, 0, 0, imagesx($stamp), imagesy($stamp));
    ob_start();
        imagepng($im);
        $image_data = ob_get_contents();
    ob_end_clean();
    return base64_encode($image_data);
}
?>
<img src="data:image/png;base64,<?php echo image_data_base64(); ?>" />

答案 2 :(得分:0)

你不能只输出那样的图像。这是图像的数据。您可以写入文件并使用相应的URI,或者您可以执行此操作

<img src="data:image/png;base64,<?php echo base64_encode(imagepng($dst_im)); ?>" />