3

クライアント側から送信された base64 コードから、サーバーのアップロード ディレクトリに画像を作成しようとしています。以下は同じコードです:

<?php
    $dataURI = $_REQUEST['dataURI'];

    $dataURI = str_replace('data:image/png;base64,', '', $dataURI);
    $dataURI = str_replace(' ', '+', $dataURI);

    $data = base64_decode($dataURI);

    // $filename = UPLOAD_DIR . uniqid() . '.png';
    $filename = UPLOAD_DIR . 'saved-image' . '.png';

    $status = file_put_contents($filename, $data);

?>

画像は正常に作成されていますが、何らかの理由で画像が半分 (水平) にトリミングされています。誰か教えてくれませんか、これの何が問題なのですか?

以下は、元の画像と保存/作成された画像です。

元の画像

作成した画像

4

3 に答える 3

1

HTTP パラメーターを介してデータを取得しています。それらは実際にはサイズが制限されています (たとえば、Apache のデフォルトは です。この制限は Web サーバーによって異なり、通常はサーバー構成で設定できます。

また、PHPにはpost_max_sizeデフォルトphp.iniで2MBの

于 2013-05-15T13:41:36.310 に答える
1

エンコーディングに問題がある可能性があります。

$dataURI = str_replace(' ', '+', $dataURI);

+どこかで発生したwithの置換を元に戻そうとする試みのように見えます - おそらく URL デコードされました。/スラッシュ文字もbase64シンボルセットの一部であるため、シンボル+を台無しにしたものは、それらも台無しにしたのではないかと思います.

私がすることは、このデータの起源を注意深く追跡し、行われた変換を観察することです.

于 2013-05-15T13:42:16.850 に答える