画像の左側、右側、下側を色にブレンドすることは可能ですか?
たとえば、画像を「#F0F0F0」の色にブレンドしたいとします。背景の実際の部分として画像を表示したいので、ブレンドするとかっこよく見えると思いました。
5 に答える
これがWebページ専用の場合、これは基本的なHTML+CSSを使用して可能です。<div>
あなたが言ったように、あなたはあなたの背景の乗り継ぎとして(注意深く配置された)PNGを使うことができます。
それ以外の場合は、PHP用のImageMagickライブラリを調べてください。これにより、説明したようにブレンドされた画像をプログラムで作成できます。(Imagick::colorizeImage
)
これを実現するには、画像のピクセルデータを操作する必要がありますが、一度それをカバーすれば、実際には問題にはなりません。ピクセルのカラー値を取得し、blendcolorとブレンドします。value1 + (value2 - value1) * amount
マルチテクスチャリングを行うときにピクセルシェーダーでよく使用されるこのアルゴリズムなど、かなりうまく実行できるかなり標準的な数学がいくつかあります。
他の人が言っているように、GDなどのphp用の画像ライブラリは、自分でデコードしてエンコードする必要がないため、画像のデータ操作に役立ちます
これは、 ImageMagickやGDなどの画像操作ライブラリを使用して行うことができます。このページでは、作成者がグラデーションを使用してGDを使用してブレンドを実行していることがわかりました。
使用することもできますImagick::colorizeimage
アップデート
スクリーンショットに基づくと、単純なHTML+CSSだけではやりたいことができなかった理由がわかりません。透明なPNGを使用するか、を使用するか、CSS(CSSを介したクロスブラウザの透明性)で使用できます。-moz-opacity
opacity
filter:alpha
正確に何が必要かはわかりませんが、半透明のpngをオーバーレイとして使用すると、元の画像を操作しなくても多くのことができます。
verotのuploadphpクラスを使用することをお勧めします。これには、画像を処理する現在利用可能なすべてのサーバーサイド操作機能(回転、色合い、フレームの色、背景色など)が含まれています。
次のサンプルコードを参照してください。
$foo->image_resize = true;
$foo->image_ratio_fill = 'R';
$foo->image_y = 150;
$foo->image_x = 100;
$foo->image_background_color = '#FF00FF';
$foo->image_rotate = '90';