問題タブ [image-scaling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - PNG を再スケーリングするカスタム メソッドが透明度を失う
皆さん、私は Java 対応携帯電話用の j2ME ゲームに取り組んでいます。次の方法で透明なPNGをスケーリングしようとしています:
画像を正しくスケーリングしますが、残念ながら、メソッドによって返された画像の透明度が失われているようです。私はこれらの概念にかなり慣れていないので、どんな助けでも大歓迎です! Java 対応のモバイル デバイスで適切に表示するには、イメージ エディタではなく、コードで再スケーリングを行う必要があることに注意してください。
前もって感謝します!
html - IEでバイキュービック補間を使用するとパフォーマンスにどのような影響がありますか?
IE7が画像のスケーリングに苦労することは誰もが知っています。img { -ms-interpolation-mode: bicubic; }
私は最近、画像を拡大縮小するときにIEにバイキュービックサンプリングを使用させて見栄えを良くするためのトリックを発見しました。ただし、ms-interpolation-modeを使用した場合のパフォーマンスへの影響を誰かが知っているかどうか疑問に思いました。
html - HTMLでスクロールバーなしでSVGを表示する方法
HTMLでスクロールバーなしでSVGを確実に表示するにはどうすればよいですか?FirefoxとChromeの両方で機能するもので十分です。
最も基本的な手順は、SVGがドキュメント内で「自然な」幅と高さで表示されることです。完全に拡張されました。スクロールバーなし。Firefoxは一般的にこれを行います。Chromeは通常、使用しません(実際の幅と高さに関する事前の知識を使用しない限り)。
より高度な手順は、SVGに任意の幅(たとえば400ピクセル)を指定することです。SVGは、アスペクト比を維持しながら適切にスケーリングされて表示されます。繰り返しますが、スクロールバーはありません。
HTML内のSVGの自然な寸法を知る必要はありません。HTMLまたはCSSを変更するのが最善ですが、SVGを変更することもできます(一度、表示したいすべてのサイズに対してではありません)。
このようなことは可能ですか?
これは、svgを埋め込んだhtmlの例です。
以下の<embed>タグは、必要に応じて<object>などに変更できます。
test.svgの例を次に示します。
アップデート:
わかりました。私が使用しているツールは小文字の属性を持つSVGを生成しているようですが、これは正しくありません。Erikが以下に正しく記述しているようviewbox
に、属性名は実際にはキャメルケースです。viewBox
これを幅/高さの削除またはパーセンテージへの変更と組み合わせると、質問の両方の部分を達成できます。
みんな、ありがとう!
actionscript-3 - 動的にロードされた画像をフラッシュにサイズ変更する方法(as3)
画像が動的にステージに呼び出されてMCに配置されると、画像のサイズを変更するための適切なas3コードを見つけるのに苦労しています。私は以下を使用してロードしています:
ステージは最終的にフルスクリーンで開きます(正常に動作します)ので、ステージよりもはるかに大きい元のサイズで画像を保持する必要があります。
私がする必要があるのは、幅を比例させながら(ああ、それを中央に)、ステージと同じ高さにロードするときにそれを縮小することです。私はあらゆる種類のコードを試しましたが、画像を含むMCのサイズを変更するだけで、画像自体のサイズを変更することができなかったため、機能するものが見つかりませんでした。正しいコードに関するガイダンスをいただければ幸いです。
私はそれが次のようなものと同じくらい簡単だと思います
しかし、もしそうなら、私が書いたように、画像名を書く正しい方法は何ですか?それは間違っているようです。どうもありがとう
エド
android - Androidでより良い品質のために画像を縮小するにはどうすればよいですか?
現在、次のコードを使用して、実行時にインターネットからダウンロードした画像を縮小しています。しかし、結果は十分ではありません。
何か助けはありますか?ありがとう。
image-processing - ImageMagick を使用した Facebook のような画像のサイズ変更
Facebook のように、いくつかの画像のサイズを変更 (縮小) したいと思います。ImageMagick、でもねえ、私は提案を受け付けています:)
Facebookはこれを行っていると思います:
最大幅 x 高さが 250x200 だとします。Facebook はこれを最適化しています。250x200 をできるだけ多く使用しようとします。たとえば、画像を縮小して 220x200 を取得した場合、250x200 フレームを可能な限り使用するまで、画像の上部と下部をカットします。実際、私は彼らが上よりも下から多くを取っていると思います (約 1:2.5)。これは、ほとんどの写真が上に頭があり、Facebook がこれを認識しているためだと私は信じています.
この種のサイズ変更アルゴリズムの名前はありますか? そして、ImageMagickにこれをさせる方法はありますか?
前もって感謝します!
編集 実際、Facebook はこの「スマートな」サイズ変更手法を行っていないようです。minwidth/minheight がある場所でサイズを変更するだけです。次に、アルバムで画像を表示するとき、フレームにできるだけ多くを使用するために、上/下または左/右から切り取ります (少なくとも私はそう認識しています)。
-トバイアス
internet-explorer-6 - ie6画像のストレッチとスケール
ウィンドウサイズに合わせて画像の背景を拡大できるようにする必要があります。これで、ie6を除くすべてのブラウザで機能します。インターネットで解決策を探し、見つけたすべてのことを試しましたが、ie6では何も機能しないようです。
これが私のデモサイトです。ie6をお持ちの場合は、私の問題を確認できます。画像をまったく歪ませずに、幅と高さ全体を伸ばす必要があります。
http://demo.jigsawfinance.com/
誰もがうまくいく解決策を知っています私はimgタグなどを持っていますがそれでも役に立ちません
ie6を持たない人のために、ここに画面ビューのキャプチャがあります
ご覧のとおり、画像も拡大するはずの空白がたくさんあります
android - 2x2の画像ベースのメニューに使用するレイアウトはどれですか?
4つの画像(同じサイズ、画面に合わせて縮小することを目的)を表示し、画面全体を占め、画面を四分円(高さ2x2グリッド)に分割する画面(縦向きモード)を作成しようとしています。これはメインメニュータイプのアクティビティとして機能し、ユーザーを別のアクティビティに誘導するために、各画像をクリック可能にする必要があります。
LinerLayout内でGridViewを使用しようとしましたが(GoogleのGridViewチュートリアルから多くを使用)、画像をすべての縮尺で適切に拡大して画面全体に表示することができません。画像の周囲に余分な余白があり、画面全体がスクロールします。
また、TableLayoutを使用して、2つの行のそれぞれに2つの画像を配置してみました。視覚的には、それは完璧に機能しました。残念ながら、これを使用すると、アクティビティコードでTableLayoutのImageViewアイテムを参照できないようです(findViewByIdは常にnullを返します)。
TableLayoutは実際には「正しいこと」ではないように感じますが、他の人の意見を聞きたいと思います。いずれにせよ、私の希望する機能を達成するために何をすべきですか?
ありがとう。
編集1.1:相対的なレイアウトは、物事を並べるためにはるかにうまく機能します。これで、findViewByIdが常にnullを返すという問題が残ります。これまでの私のコードは次のとおりです。
android - Android - 異なる解像度でビットマップ上の特定の位置 (X、Y 座標) を決定しますか?
作成しようとしているアプリはボード ゲームです。ボードとして 1 つのビットマップと、ボード上のさまざまな場所に移動するピースがあります。ボードの一般的なデザインは正方形で、特定の数の列と行があり、外観の境界線があります。チェス盤やスクラブル ボードを思い浮かべてください。
ビットマップを使用する前に、最初にボードとボーダーを手動で描画して作成しました - drawLine & drawRect。「onSizeChanged」で渡された画面の幅と高さに基づいて、境界線の幅を何ピクセルにするかを決定しました。残りの画面を、必要な列または行の数で割りました。
例として、画面のサイズが 102 x 102 であるとします。
境界線を 1 に設定し、行と列の数を 10 に設定することを選択した可能性があります。これにより、100 x 100 が残ります (上下の境界線と左右の境界線を考慮して 2 だけ削減されます)。次に、列と行を 10 に設定すると、高さと幅の両方に 10 ピクセルが残ります。
どのような画面サイズが渡されても、ボーダーの幅のピクセル数と、ボード上の各正方形の高さと幅を正確に保存します。単純な式に基づいて画面上のどの位置にピースを移動するかを正確に把握しており、ユーザーがどのセルに触れて移動したかを正確に把握しています。
では、ビットマップではどのように機能するのでしょうか? つまり、密度ごとに1回、3つの異なる背景ビットマップを作成すると、各デバイスの画面解像度に合わせてサイズが変更されません.もっと。私または Android が現在のデバイスの画面サイズに合わせてビットマップを拡大または縮小する場合、ピースをどこに移動するか、またはプレーヤーの場所を計算するために、境界線の幅と各正方形の寸法をどのように知ることができますか触れた。これまで見てきた例は、ビットマップ全体をスケーリングし、ビットマップ全体の幅と高さを取得する方法を示しているだけです。しかし、スケーリング後にボードの各部分の幅または高さが何ピクセルになるかを知る方法がわかりません。
ビットマップでこれについて読むことができるサンプル コードまたは URL を誰かが持っている場合は、感謝します。
ところで、画面サイズに関係なく、ゲームボードの寸法 (境界線と正方形) を知る方法に関するサンプルコード (非常に単純化されたコード) を次に示します。ここで必要なのは、任意の画面サイズにスケーリングされるビットマップとしてボードを使用してこれを行う方法を知ることだけです。
私は答えを見つけたと思います。1 つのスケーリングされたビットマップ内でプレイ可能な各正方形の正確な幅/高さと位置を見つけることができない場合がありますが、SDK の Snake の例を見ると、ボード全体とスケールに対して 1 つのビットマップが作成されていないことがわかります画面の寸法に基づいています - 代わりに、タイルごとにビットマップを作成し、画面の解像度と画面に必要なタイルの数に基づいてタイルをスケーリングします - ボードを手動で描画するときと同じように。この方法を使用すると、ボード上のすべてのプレイ可能な正方形の正確なピクセル境界を見つけることができるはずです。ボードを正方形ごとに複数のビットマップに分割するだけです。おそらく境界線についても同様のアプローチを行う必要があるため、スケーリング後に幅/高さも検出できます。
確認のためにテストしますが、Snake SDK の例で見たものに基づいて動作することを期待しています。
- マイク
私が求めていたことを実行する方法をテストしましたが、うまくいくようです。これが私がしたことです:
ボード用に 320 x 320 のビットマップを作成しました。境界線と正方形 (チェス盤のようなもの) で構成されていました。ボーダーは、ボード全体で 10 ピクセルの幅でした。正方形は 20 x 20 ピクセルでした。
onSizeChanged で画面の幅と高さを検出しました。480 x 800 ディスプレイでは、ボードの新しい幅を 480 x 480 に設定し、次のコードを使用して全体をスケーリングします。
境界線の幅が何ピクセルにスケーリングされ、正方形がスケーリングされた高さと幅のピクセル数を検出するために、最初に全体の画像がどれだけスケーリングされたかを計算しました。ビットマップを作成したときから、ビットマップが 320 x 320 であることはわかっていました。次の式を使用して、画像がどれだけスケーリングされたかを計算しました。
floatBoardScale = floatScreenWidth / 320;
幅 480 の画面の場合、floatBoardScale は 1.5 です。次に、完全なビットマップ内の境界線が何にスケーリングされたかを計算するために、次のことを行いました。
floatBorderWidth = 10 * floatBoardScale;
10 は、320 x 320 ビットマップの元の境界線の幅でした。最終的なコードでは、値をハードコーディングせず、変数を使用します。とにかく、この式の場合、新しく計算された境界線の幅は次のようになります: 15
ボードの四角形 (元のビットマップでは 20 x 20) に同じ倍率を掛けると、30 x 30 という新しい値が得られました。数式でこれらの値を使用して、人が触れた四角形を計算すると、うまくいきました。四角の隅々や中央に触れたところ、常に正しい位置が計算されました。これは重要なことです。画面の解像度に関係なく、ユーザーがピースを移動したい場所を把握しており、視覚的に適切な場所に表示されます。
同じ疑問を持った方の参考になれば幸いです。また、誰かが同じことを達成するためのより良い方法を持っている場合は、投稿してください。
android - 画面全体に画像を拡大縮小する方法
私の問題はこれです:私はアンドロイド2.2をターゲットにしてアンドロイドエミュレーターを使用しています。アプリケーションの背景を処理するカスタムビューを作成しました。このビューでは、画像のみを表示したいのですが、画面全体に表示したいのです。
「アクティビティ」からビューを次のように初期化します。BackgroundViewbw=new BackgroundView(this);
問題:HDDで、使用しているリソースイメージは500x375ピクセルです。電話した後:
ビットマップm_resourceBitmap=BitmapFactory.decodeResource(getResources()、R.drawable.landscape_1); int nWidth = m_resourceBitmap.getWidth(); int nHeight = m_resourceBitmap.getHeight();
返されるnWidthとnHeightは、リソースを配置した場所によって異なります。「drawable-mdpi」に配置すると元のサイズになり、そうでない場合は他のサイズになります。
一方、this.getWidth();を介してビューに幅と高さを要求すると、this.getHeight();
固定値を取得しますが、デバイスに期待する解像度とは異なります(480x800デバイスを設定すると、320x533を取得します)
最後に、ビューの寸法を画像の寸法で割ってスケールマトリックスを作成しようとすると、画面上の結果は画面よりもはるかに小さい画像になります...
私の質問は、ビュー内でリソースビットマップを描画して画面全体を占めるようにするには、どのような質問をどのオブジェクトから行う必要があるかということです。