2016-10-29 16 views
0

GDライブラリを使用してPHPで画像のサイズを変更したかった。PHPで画像サイズを変更すると黒い画像が生成される

私は多くを助けたthis questionを見つけました。それは私が望むものを正確にすることを可能にしました。私は回答の偽の代わりにデフォルト値をtrueに変更しました。また、pngのサイズを変更する方法も追加しました。

このresize_imageの機能は、this imageを400x128(ランドスケープ)にスケールダウンしたいときまで、すべての画像ですばらしく機能しました。

これで黒い画像が作成されました。私は追加した部分を削除して、その質問からコピーされたプレーン関数を使用しても、それはまだ黒くレンダリングされました。この特定の画像は400x400など他の画像サイズにも問題があるようです。作物オプションを無効にすると、すべて正常に動作します。

関数に含まれる数学に問題がありますか?私は紙で数学をやり直してみたかったのですが、途中で混乱しました。例:

PHPfiddle最後の2行目の値を別の値に変更してみてください。部分的に機能します(トリミングはスケーリングする必要がありますが、スケールしないでください)。

+0

どのバージョンのPHPですか?あなたは常にURLを渡すこの関数を使用しますか?またはこの場合のみですか? –

+0

@HailHydra 5.4.17。すべてのケースでURLを渡します。 URLは機能している、私はそれがちょうど数学だと思う。値を変更してフィドルで500x500にリサイズし、実行をクリックしてみてください。そこには多種多様な作品があります。 – FoxInFlame

+0

Ï私が画像のサイズと品質を減らすために使用する機能を回答として投稿します。 –

答えて

1

私がそれをデバッグしたとき、幅はマイナスでした。私は、次の

$width = abs(ceil($width-($width*abs($r-$w/$h)))); 

に9行目を変更した場合 だから、それはもう黒ではありません。 私は式が正しいかどうかを確認しませんが、abs()はイメージをもう黒くしません。

+0

私が期待していたものではありません(これは同じ比率であると考えられています - 底を薄くするために切り取っただけです;それは 'abs()'を使って伸ばして見えます)。 **編集**私は9行目を '$ width = abs(ceil($ r- $ w/$ h)));'に変更し、その行の後に '$ height = $ height - abs($ h); '、それはほとんどそれを修正したと思います。 – FoxInFlame

+0

まあ、私はあなたがその作物の公式で成し遂げようとしていることを理解していません。サイズ変更やトリミング機能の期待される動作を記述する新しい質問を作成できる方が良いでしょうか?この質問は、負の幅によって引き起こされた、すでに答えられている黒い画像に関するものです。 – elfan

+1

私は新しい質問を作成するつもりはないと思います。あなたは私の問題の最も重要な部分を解決しました。それは黒いイメージでした。私はおそらく何とか私自身のことを考え出すでしょう。ありがとうございました! – FoxInFlame

関連する問題