2017-05-02 17 views
4

ローカルファイルを読み込んだ後、ユニティTexture2Dに割り当てます。イメージは、im.sprite = Sprite.Create()関数を使用して割り当てられます。バイト配列データから画像の幅と高さを取得する

問題は、バイト配列から画像の幅と高さを検出する必要があるため、テクスチャサイズを調整して、実行時にイメージのストレッチを避けることです。

ライブラリーや関数を使ってイメージバイト配列から一時イメージを作成し、スプライトを作成してテクスチャを適用する前に希望の幅と高さを確認する方法を知っていますか?

私はJavaで解決策を見つけましたが、C#で対応することで問題を解決できませんでした。

+0

[バイト配列から画像への変換]の可能な複製(http://stackoverflow.com/questions/9173904/byte-array-to-image-conversion) – Mat

+0

@Matそれは複製ではありません。これは統一です。 – Programmer

答えて

6

Texture2D.LoadImageを呼び出すと、Texture2Dインスタンスが自動的にイメージのサイズに置き換えられます。 Texture2Dインスタンスから幅と高さを取得し、Sprite.Create関数に渡すことができます。

byte[] imageBytes = loadImage(savePath); 

がにTexture2Dに新たにTexture2D

Texture2D texture = new Texture2D(2, 2); 

読み込み、それを作成し、バイト配列にイメージをロードします。 LoadImageが呼び出された後、2x2はそのイメージのサイズに置き換えられます。

texture.LoadImage(imageBytes); 

あなたのイメージ成分

Image im = GetComponent<Image>(); 

あなたはそれで新しいRectを作成し、新しいSpriteを作成するために、あなたのスプライト機能にそれを渡すことができます。

im.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f)); 

Texture2D.LoadImage機能hereについては、こちらをご覧ください。

Texture2D.widthTexture2D.heightの変数が必要です。

+1

ありがとうございました。 – Diego

関連する問題