PHPとSQLを使って画像を取得するサイトを作っているのですが昨日新しく入れた画像の一部が黒くなってしまいました。
エラーかと思って同じ画像をもう一度保存して取得したところ同じように一部が黒くなりました。
他の画像を試してみると黒くなるのと、そうでないのがあります。
これはファイルのサイズの問題なのでしょうか。
その場合、PHP.iniのpost_max_size=ooMBを変更すれば大丈夫なのでしょうか。
それとも別のやり方があるのでしょうか。
よろしくお願いします。
*追加
先ほどphp.iniの「post_max_size」サイズを倍にしてみましたが一部黒いまま保存されてしまいます。
別の問題があるということでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
回答5件
0
元ファイル、データ投入時、データ呼び出し時、各サイズを確認してみてください
データ投入に失敗しているだけではないでしょうか?
ただしくプレースホルダで処理されていますか?
投入時に壊れているだけではないですか?
投稿2016/10/03 07:10
総合スコア118268
0
今回はデータベースのカラムの問題でした。
BLOBだと最長65,535バイトまでとのことでそれ以上の画像を保存する場合はMEDIUMBLOBやLONGBLOBにすると画像の保存や出力はうまくいきます。
alter table テーブル名 modify カラム名 MEDIUMBLOB;
ただやり方としては回答してくださった方がいように
「ディレクトリへの保存」が普通で一般的だそうです。
今回はあくまでカラム定義BLOBで画像がキレイに入らないのはカラムの定義(容量)の問題でMEDIUMBLOBやLONGBLOBで治るです。
投稿2016/10/03 07:37
退会済みユーザー
総合スコア0
0
ベストアンサー
「SQLを使って」というのが意味不明ですが、おそらく「PHPで取得してきた画像をデータベースに入れている」という意味ですかね?
もしそうだとしたらまず「SQL」および「データベース」という単語・概念の意味についてググって違いを理解してください。
で、具体的な解決についてですが、
1:画像を入れているデータベースのカラムの種別と制限サイズはどうなっていますか?
2:そもそもなぜ画像をDBに入れたいのですか? ファイルのままディレクトリに保存すればいいのでは?
以上2点をお知らせください。
投稿2016/10/03 06:53
退会済みユーザー
総合スコア0
退会済みユーザー
2016/10/03 07:18
退会済みユーザー
2016/10/03 07:26
退会済みユーザー
2016/10/03 07:32
退会済みユーザー
2016/10/03 07:37
0
おそらく、入れた画像が透過PNGだったのではないかと推測します。
αチャンネルがある場合、それを意識したハンドリングが必要です(一例。なお、具体的な処理はやることに依存します)。
投稿2016/10/03 06:49
総合スコア147021
退会済みユーザー
2016/10/03 07:01
0
SQLということはLOBでしょうか?
差支えないない範囲で現象を再現できる最小限のコード、画像のサイズやハードウェアの性能は提示した方が解決が早いです。
データ量が多いbmpで表示していたのをjpgにしたり、求める画質に許容できる範囲で画像をリサイズしたら解決なんて初歩的な対応で高価なサーバーのリプレイスをしないで済んだ、ってこともあります。
投稿2016/10/03 07:06
総合スコア16419
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
