質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

3回答

1326閲覧

ASTCフォーマットの画像データを汎用画像データに変換したい

T_BanGDreamer

総合スコア1

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2023/03/18 13:29

編集2023/04/12 14:53

実現したいこと

ASTCフォーマットで圧縮された画像を汎用の画像データ(ex. PNG, JPG etc...)に変換したい。そもそもできるのか不明なので知りたい。

前提

圧縮された画像をPHPで取り扱いたいが、そのままだと表示できない。なので汎用画像データに変換して表示しようと試みている。

試したこと

  • 調べる (1h程度)
  • astcencを使ってみる(失敗)
  • Pythonのastc-decompを使ってみる(失敗)

補足情報(FW/ツールのバージョンなど)

  • コマンドラインで自立実行できるようなアプリケーションを探してます

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

Unityタグからきますた
一旦ServerOSとかCPUアーキテクチャの指定がなかったので一番クソ楽な方法なWin10+WSL Ubuntu22.04で...

sudo apt install astcenc するのが最速な気がします
WSLじゃなくてもちろんいけると思います。

動作確認は以下の通りです。

$ wget https://placehold.jp/150x150.png #test画像のDL $ astcenc -cl ./150x150.png test.astc 6x5 -medium #いったんastcに $ astcenc -dh ./test.astc output.png #デコード

一旦こんな感じで動作確認までできてます.
普通はデコードなんてあんましやらんのですがASTCはMobile向けGPUでしか基本動かないので臨時対応としてデコードすることが稀にあります。 
あとは任天堂Switchのエミュレータとかですかね。

2023年現在は.ktx2という圧縮コンテナ型式を使うのがおすすめで、ランタイム展開時にGPUのアーキテクチャを問わずに適切な圧縮formatを展開できます。
圧縮形式の決定権があるのあれば、astcを直で使うのではなくktx2を使ってthree.js経由でWebGL Canvasから表示したほうがシンプルかもしれません。

参考
https://github.com/KhronosGroup/KTX-Software
https://threejs.org/docs/#examples/en/loaders/KTX2Loader

投稿2023/03/22 05:02

編集2023/03/22 05:10
UnitySoldier

総合スコア204

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T_BanGDreamer

2023/04/12 05:53

返信遅くなり申し訳ありません。 astcencをコマンドラインから使うのがやはり最適解ですかね…! また違った圧縮形式もあるんですね!今回は既存のデータのデコードなのでアレですが今度試してみます。
guest

0

https://github.com/mafaca/Astc
こちらにC#で実装したdecoderがあるみたいですが参考になりませんか?

投稿2023/03/18 22:39

YAmaGNZ

総合スコア10220

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T_BanGDreamer

2023/03/19 06:27

回答ありがとうございます。 Linux用にビルドしようとしているのですが、C#を使ったことがないのでかなり苦戦しております… VisualStudioからビルドする形でいいのでしょうか?素人質問かつ関係のない質問になってしまいましたが…。
YAmaGNZ

2023/03/19 09:02

UnityとタグがあったのでC#での例があるか検索してみたのですがC#じゃないのですか?
T_BanGDreamer

2023/03/19 09:59

あっ、ASTCフォーマットが一般的にUnityで使われているみたいなのでつけちゃいました…申し訳ない… ビルド→コマンドラインから実行出来れば汎用的に使える(今回の場合はPHPからexec()経由)と思いまして。タグ付けヘタクソ過ぎますね、、、、
guest

0

全然詳しくないので詳しい方がいらっしゃるようでしたらそちらを参照いただきたいところですが、
(すでに試されている?みたいではありますが)本家が encoder/decoder を提供しているのでそちらを使うのがよさそうにおもいました。
https://github.com/ARM-software/astc-encoder

たとえば astc => bmp => opencv 等のフローを作れば大抵のプログラミング言語で取り回せるかとおもいます。
PHP であれば https://github.com/php-opencv/php-opencv などみつかりました。(このライブラリがメジャーかはわかりませんが)

投稿2023/03/18 17:24

yagihiro

総合スコア73

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T_BanGDreamer

2023/03/19 06:38

回答ありがとうございます。 Linuxサーバー環境があるのでそっちに回してastc-encoderに丸投げするのが一番楽ですよね… 少し試行錯誤してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問