LoginSignup
1
0

More than 1 year has passed since last update.

32x32のドット絵をSVGで包んで拡大する

Posted at

フルオンチェーンNFTは画像をオンチェーンにする必要があります。画像のサイズがガス代に直結するので できるだけ小さいサイズ にしたいですが、 32x32のドット絵という制約下ならなにか工夫できるかも? ということでやってみました。

サンプル画像

以下のサンプル画像をEthereum Goerliテストネットに やっつけコントラクト でデプロイして確認しました。
sample.gif

属性
フォーマット GIF
画像サイズ 32x32ピクセル
カラー インデックスカラー、128色
データサイズ 1,139バイト

SVGのパスに変換してみる

直感的にはパスに変換するとむしろ大きくなるんじゃないかな?というところですが、変換してくれる素晴らしいサイトがあったので、とりあえずやってみました。
ドット絵用 svg コンバーター

属性
フォーマット SVG
データサイズ 10,904バイト

まあそうですよね。

GIFのまま

サンプル画像のGIFをそのまま使ってみました。テストネットのOpenSeaで見るとこんな感じ。

32x32ですね😂
大きく表示して欲しいですが、そのためにデータサイズはあまり大きくしたくはありません。

SVGで包んで拡大する

そこでタイトルです。
画像はそのまま32x32で使い、SVGのimageタグで拡大してみました。
widthとheight、 image-renderingにpixelated を指定すると、変に補正がかからずドット絵としてはいい感じに拡大してくれます。

<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1280" height="1280">
  <image xlink:href="data:image/gif;base64, <Base64にした画像データ> width="1280" height="1280" image-rendering="pixelated"/>
</svg>
属性
フォーマット SVG
データサイズ 1,774バイト

これなら大きく表示してくれました😁

参考サイト

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0