0

嗨,我刚刚编写了代码:

<?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ðÔ€ÛÂ~Í‹P3£Œ´¶ÛÛ A†YEUkÌ¡èæ_Ê!ÊÔgò s“Û¤ÇC,MŒ+‰?>¡·Ñ[ïªWf™.œsḜ3€@á¦~vþf ŒÀì¢ ª}à9¹#åIĉꕡ èˆÀî”Ûw¥@ù"¢¢™áHªUúݸ÷ÉÇYÿ®šGÅçǘîwqžˆ³ýÏJ ÕKSêô¯Tis“†Ã¡í©ÈK‡}G:Xqt×ÓIJEpT,úŽ¿ƒ ~¼lÞÈÚ6]_Óœ>®çqÿNÏ'çqWŠjš-…(—=g¿ÁŸÍgæ+ùB¹R©Öwܸþn¤:C‰õØËüÛïݱI¸°\ÉÌ[%«V³7ÞÕM¾Í>[ké·IEND®B`‚1"/ >

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

谢谢!

4

3 回答 3

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">
于 2012-12-10T17:43:21.750 回答
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(); ?>" />
于 2016-07-06T15:58:45.983 回答
0

你不能只输出这样的图像。那是图像的数据。您可以写入文件并使用相应的 URI,也可以这样做

<img src="data:image/png;base64,<?php echo base64_encode(imagepng($dst_im)); ?>" />
于 2012-12-10T17:39:00.920 回答