SVGを縮小すると品質が低下する


8

スケーリングを通じて品質を維持するSVGを作成する最良の方法を見つけるのに苦労しています。画像の実際のサイズは、Illustratorでピクセルパーフェクトな中程度のサイズです。ただし、SVGとして保存すると、一番右の垂直線がぼやけます。より良い品質/スケールフレンドリーなSVGを作成するにはどうすればよいですか?

小さい 小さい

実際の 中

ここに画像の説明を入力してください



これのだまし絵ではありません。回答と質問は一般的に関連していますが、完全に重複しているわけではありません。@IlmariKaronen
CuriousWebDeveloper

それについて質問しました。graphicdesign.stackexchange.com/questions/32134/... @ DA01
CuriousWebDeveloper

回答:


10

SVGは100%のソース品質を維持します

SVG画像のデータはピクセルではなくXMLとして保存され、ソースの品質を損なうことなく任意のレベルに拡大縮小できるコンポーネントで構成されています。

画面の解像度

画面上のグラフィックが小さくなると、ソースを表すためのピクセルが少なくなり(まだ完全な品質です)、画像の鮮明さが低下します。

アンチエイリアシング

ここに画像の説明を入力してください

大きな画像(左)と小さな画像(右)は両方ともアンチエイリアス処理されています(エッジで使用されているわずかで微妙な色を参照してください)。

アンチエイリアシングは、画像のレンダリングに使用される手法であり、ギザギザのギザギザを回避するためにシャープネスを犠牲にします。この手法は、エッジを滑らかに保つために使用されるため、最小の画像の品質が低下します。解像度が低いため、ここではアンチエイリアシングがより明確になり、垂直エッジでも使用されます。

これはアンチエイリアス処理で発生するのではないかと思います。これは、別の方法で行うのが難しいためか、画像の均一性のためです。対角エッジがアンチエイリアシングによってわずかにぼやけており、垂直エッジはそうではない場合、それは非常にバランスの取れた効果にはなりません。

アンチエイリアシングは、Webグラフィックの縁の下の力持ちです。これが、画面上にクリアテキストと滑らかなベクター形状がある理由です。現在、ブラウザで使用されているアンチエイリアスにはいくつかのアプローチがあり、テキストレンダリングに関しては最も明白です。アンチアライゼーションに使用されるアルゴリズムが切り替わると、予期しない視覚結果が生じる可能性があります。この記事では、アンチエイリアシングへのアプローチを見て、ピクセルがどのように描画されるかを見ていきます。

すべての画面は、ご存じのようにピクセルで構成されています。これは巨大なブロックのグリッドであり、それぞれに赤、緑、青(RGB)コンポーネントが含まれています。離れたところに画像、テキスト、アイコンが表示されますが、間近では実際にRGBコンポーネントのグリッドとすべてがどのように構成されているかを確認できます。

では、ベクターシェイプを描画していて、ピクセルの「一部」を通過するとどうなるでしょうか。描画している形状が黒で、背景が白であるとします。そのピクセルに色を付ける必要がありますか?着色するなら何色?黒、灰色、何か他?

-HTML5 Rocksによるソース記事

ソリューション

ピクセルヒンティング。ピクセルヒントの下の新しいユーザーによってリンクされるのは、まさにあなたが必要とするものであり、あなたの質問に対する適切な答えです。アンチエイリアシングは、すべてのエッジを釘のように扱い、制限なくスマッシングとスムージングを行います。ヒントを与えない限り!

どうやって...

ここに画像の説明を入力してください

まず、ピクセルヒントにするベクター図形を含むドキュメントを開きます。この手法は、ベクターで作業している場合はうまく機能しますが、ラスターシェイプで作業している場合は、ピクセルヒンティングを管理できますが、高度な場合に限られます。とりあえずはベクターシェイプを使いましょう。

次に、ピクセルグリッドが表示されるまで、できるだけズームインします。十分にズームインしているにもかかわらず、ピクセルグリッドが表示されない場合は、いくつかの設定と環境設定を変更してオンにすることをお勧めします。オンになっていて、それが表示されている場合は、ベクターパス/シェイプを選択してください。

3番目に、ベクトルパス上の点を選択し、矢印キーを使ってピクセルを分単位で移動します。アプリによっては、ボタンを押し続ける必要があるものと、そうでないものがあります。パスがピクセルを上にシフトするだけではないことを知っている限り、パスを最大で0.5ピクセル上にシフトする必要があるためです。

4番目に、ズームアウトしたときにすべてがぼやけて見えなくなるまで、残りのベクトルのポイントについても同じようにします。完了したら、ベクトルシェイプの場合と同じように、シャープで「ピクセルパーフェクト」なスタイル、グラデーション、シャドウなどを適用できます。

最後に、このテクニックでさらに1マイル進むことを考えている場合は、「あまりにも」鮮明に見えるアイコンのベクトルポイントを微調整してみてください。ときどき、サクサクした曲線よりも、曲線がわずかにぼやけて見える場合があります。

-業界による出典記事、tareq-a提供。


ベクトルシェイプによるピクセルヒンティングは、レンダリングシステムにエッジの意図を伝えます。そのため、アンチエイリアシングは、スムージングハンマーでスイングするかどうかを認識します。


2

他の人が指摘したように、ぼかしは、スケール画像の垂直線がピクセル境界に正確に一致しない場合のアンチエイリアスによって引き起こされます。

これをSVGエディターで手動で修正するには、まず画像を目的のサイズに拡大し、次にズームインして手動でラインを調整し、ラインがピクセル境界に正確に収まるようにします。(Inkscapeでこれを行う場合は、ドキュメントの設定で2行ごとに強調して0.5pxグリッドを設定することをお勧めします。)

または、PixelSnap Inkscapeプラグインが便利な場合もあります。このジョブの面倒な部分を自動化し、ラインを自動的にシフトして、ピクセル境界に正確に収まるようにします。常に完璧な作業を行うとは限りませんが、通常、ピクセルのヒントを完全に手動で行うよりも、適切に処理させて次善の結果をクリーンアップする方がはるかに簡単です。


1

@Jonathan Toddがぼやけを回避するための優れた理論の説明と一般的な方法を提供したと思います。この記事で見つけた、Adobe Illustratorでピクセルヒントを行う方法に関する練習ビデオを補足したいと思います

このビデオの方法を次のように説明します。

  1. 表示するアイコンの大きさを把握します。16px x 16pxで表示したい場合は、同じサイズのアイコンを作成して、最適な効果を得ることができます。カスタムアイコンを必要な正確なサイズに設計することをお勧めします。

  2. Adobe Illustratorを使用してSVGアイコンファイルを開き、編集します。2つの三角形はどちらもSVG形式ですが、1つは仮想グリッドに適切に配置されており、画面に表示してもぼやけません。

  3. ぼかしアイコンを編集するには、まず画像単位をピクセルで設定します。これはWindowsとMac OSでは異なるので、ググったほうがいいと思います。 ここに画像の説明を入力してください

  4. ピクセルヒントを有効にしたデザイン。(alt+ + YMacのかalt+ ctrl+ YWindows上で) あなたは、直角三角形の水平エッジ画素ではないながら、左の三角形の水平および垂直エッジ画素が完全にグリッドを揃える見ることができました。
    ここに画像の説明を入力してください

  5. 最初に幅と高さを変更し、小数部分を削除するためにXとYを変更します。最初に幅と高さを編集してから、x座標とy座標を変更することをお勧めします。

小数値を変更する

ここに画像の説明を入力してください

数値を丸める(小数部なし)

ここに画像の説明を入力してください

  1. 出来上がり。使用するために画像を保存してください!

-1

多分このリンクはあなたの問題を解決するのに役立つでしょう、 http://theindustry.cc/2012/10/17/designed-pixel-hinting/


2
こんにちはtareq様、GDSEへようこそ。ご入力いただきありがとうございます。あなたが提供したリンクで私たちが見つけることができるものについて少し情報を追加していただけませんか?そうすれば、後でリンクが切れた場合に備えて、あなたの答えは依然として貴重です。リンク切れは、リンクのみの回答に夢中にならない理由の1つです。再度ありがとう、そしてサイトを楽しんでください!
Vincent
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.