0

私は最近、php を使用して画像のサイズ変更プログラムを作成しました。このプログラムは、別のサーバーから画像をダウンロードし、サイズを変更して、独自のサーバーに保存することで機能します。

悪いニュースは、私のホスティング アカウントでは 64M の php メモリ制限しか許可されておらず、クライアントがアップロードしている HUUUUGE ファイル サイズ (3 - 4mb) のサイズを変更するように設定されていないことです。これらのイメージに合致すると致命的なエラーを吐き出し、スクリプトを壊します。

この欠点についてクライアントに通知しましたが、クライアントは引き続き大きな画像をアップロードし、スクリプトは壊れ続けます。

を使用してダウンロードする前に画像の幅と高さを取得getimagesize()できます。この情報を使用して合計ファイル サイズを計算できれば、画像リサイザーが実行される前に発生し、素敵な「画像なし」で画像を補うことができます。利用可能」の代替。

ビット深度が 24 であると仮定して、幅と高さを使用して画像ファイル サイズを正確に見積もるにはどうすればよいですか?

4

4 に答える 4

3

メモリ内の画像は、常にJPEG、GIF、またはBMPで圧縮された同じ重みになります。これはBIT-MAPと呼ばれます。したがって、メモリ内の画像のサイズを計算する場合は、幅、高さ、およびビットサイズを取得してビットの重みを取得し、8で割るとバイトサイトが取得されます。

$ByteSize = Width*Heigh*(24/8)

淡色化された画像など、一部の部分で画像からより多くの重みを取得できることに注意してください。画像のカラーパレットをメモリに保存する必要がありますが、ほとんどの場合、これはビットマップよりも重みが小さいはずです。

于 2011-10-07T12:17:37.447 に答える
0

サイズは常にフォーマットによって異なります。画像を圧縮する場合、画像自体のサイズはファイルサイズに影響しません。ファイルサイズを適切に読み取ることができる唯一の方法は、ビットマップ(または類似)形式を使用する場合です。

たとえば、JPEGのサイズは10 MBで、圧縮のしくみのために1MBだけ回転するとサイズが大きくなる可能性があります。

于 2011-10-07T13:11:36.377 に答える
0

乗算。高さ×幅を 3 倍して、これらすべてのバイトを処理するために予備のメモリを投入します。たとえば、画像サイズが 2 倍になります。

ただし、ファイルサイズとは関係ありません。

于 2011-10-07T12:15:10.647 に答える
0

サーバーにアップロードする前に、php ではできませんが、javascript を使用できます。

https://developer.mozilla.org/en/DOM/File

と連携して動作し、使用してファイルサイズを即座に提供します

fileInput.files[0].fileSize

これらを読んでください:

https://developer.mozilla.org/en/Using_files_from_web_applications http://hacks.mozilla.org/2009/12/multiple-file-input-in-firefox-3-6/

お役に立てれば!

于 2011-10-07T12:25:19.600 に答える