0

だから、私が欲しいのは、ユーザーが画像をアップロードできる場所です。PHPスクリプトは透かしを追加し、画像はimgur APIを使用してimgurでホストされます

画像に透かしを追加して imgur にホストすることは問題ではありませんが、問題は、画像を imgur にアップロードするには、写真の base64 を渡す必要があり、PHP によって透かしが付けられた写真を取得できないことです。file_get_contentsandを使用したスクリプトでfopenは、常にエラーが発生します

画像を取得してbase64にエンコードできるように、誰かが問題を解決してください

それで全部です

アップデート:

言うまでもなく、最初に写真をディスクに保存せずにPHPファイルを直接開く機能を使用しました。何らかの理由で画像をディスクに保存できないため、imgurを使用しています

再度更新:

ここに私のコードがあります:

<?php
    header('Content-type: image/png');
    $image = $_GET['url'];
    $imagesize = getimagesize($image);
    $img = imagecreatetruecolor($imagesize[0], $imagesize[1] + 50);
    imagecopy($img, imagecreatefrompng($image), 0, 0, 0, 0, $imagesize[0], $imagesize[1]);
    $string = "Some wild watermarks";
    $font = "font.ttf";
    $fontSize="30";
    $textColor = imagecolorallocate($img, 255,255,255);
    $x=7;
    $y=$imagesize[1] + 42;
    imagettftext($img,$fontSize,0,$x,$y,$textColor,$font,$string);
    imagepng($img);
?>

これが私が得たエラーです:

使用file_get_contents:

Warning: file_get_contents(watermark.php?url=roughdesign.png) [function.file-get-contents]: failed to open stream: Result too large in URL

使用fopen:

Warning: fopen(watermark.php?url=roughdesign.png) [function.fopen]: failed to open stream: Result too large in URL
Warning: filesize() [function.filesize]: stat failed for URL
Warning: fread(): supplied argument is not a valid stream resource in URL
4

2 に答える 2

0

簡単な疑似コードのアイデア

これはうまくいくはずです。エラーが発生した場合は、エラーの内容とエラーが発生した場所を記載してください。

于 2013-03-27T11:10:29.033 に答える
0

あなたはこれを試すことができます-

<?php
function base64_encode_image ($filename=string,$filetype=string) {
    if ($filename) {
        $imgbinary = fread(fopen($filename, "r"), filesize($filename));
        return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary);
    }
}
?>

base64_encodeで詳細情報を見つけることができます

また

あるいは、これを行うことができます-

$imageContent= file_get_contents($yourImage);
$encoded = base64_encode($imageContent);
于 2013-03-27T10:59:47.490 に答える