問題タブ [image-compression]
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.
image - ウェブコミックの画像圧縮
おそらくこのあたりの多くの人々が私はいくつかのウェブコミックを読んだ。Drowtalesは私のお気に入りですが、それは重要なことではありません。
長い間、私の頭の後ろで考えが私を悩ませてきました:ウェブコミックは描かれた絵です。写真ではありません。多くの冗長性(色が少ない、色が平らな領域など)が必要であるため、ロスレス品質を維持しながら、非常に高速で簡単に圧縮できる必要があります。それでも、それらを圧縮するための最良のツールは、同じ古い不可逆JPEGであるようです。
どうして?より良いものが発明されていませんか?私はデータ圧縮の専門家ではないので、より良いアルゴリズムを見つけるための私自身のわずかな試みは無益でした。私が見つけた最高のものはPngcrushでしたが、それでも圧縮の点でJPEGよりはるかに遅れています。
これについて専門家の意見を聞きたい。私のこの考えは愚かで失敗する運命にありますか?それとも、人々が見つけた、または私が調べることができる方法はありますか?
もちろん、これはロード時間を短縮したいという利己的な欲求から来ています。:)
追加:一部の人々は要点を見逃しているように見えるので、明確にします:
ウェブコミック画像は、簡単に圧縮できるように、多くの冗長性を備えている必要があります。どういうわけか、それらをロスレスでJPEGよりも小さくなるように圧縮することはできませんか?または、少なくとも品質を維持しながら、JPEGよりも適切に圧縮します。
それらはWeb用であるため、専用のコンプレッサーはおそらくPNGまたはJPEGを出力するはずです。より良い結果を得るために、修正されたアルゴリズムで圧縮されただけです。
compression - 高圧縮ビデオに表示されるブロックの原因/使用/理由は何ですか?
私は圧縮アルゴリズムをあまり使用していないので、しばらくお待ちください。これは、一部の人には明らかかもしれません。ストリーミングビデオが遅れ始めたときに私がいつも気づいたことがあります。この質問を見たとき、私は興味があったことに気づきました。
私はピクセル自体について話しているのではなく、圧縮から生じるグリッドのようなレイアウトについて話しているのです。これはどのようなアルゴリズムまたは手法を示していますか?それについて何を教えてもらえますか?
image-processing - JPEG の品質レベルを判断することはできますか?
これらがどのように機能するかまだ完全には理解していないため、これは実際には 2 つの部分からなる質問です。
私の状況: ユーザーが画像をアップロードできる Web アプリを作成しています。次に、アプリのサイズを表示可能なもの (例: 640x480 っぽい) に変更し、後で使用するためにファイルを保存します。
私の質問:
- 任意の JPEG ファイルが与えられた場合、サイズ変更された画像を保存するときに同じ品質を使用できるように、品質レベルを知ることはできますか?
- これも関係ありますか?? 元の品質に関係なく、すべての画像を適切なレベル (例: 75-80) で保存する必要がありますか?
私が理解しているように、(極端な例を見てみましょう)、誰かが 5 メガピクセルの画像を品質 0 で保存した場合、それはとにかくブロック状になるため、これについてはよくわかりません。画像サイズを 640x480 に縮小すると、ブロックが滑らかになり、ほとんど目立たなくなります...再び品質 0 で保存するまで...
スペクトルの反対側では、q=0 で 800x600 の画像があった場合、640x480 にサイズ変更しても、まったくがらくたのように見えるという事実は変わらないため、q=80 で保存するのは冗長です。
私も近いですか?
それが役に立ったら、PHPでGD2ライブラリを使用しています
image-processing - オンザフライのロスレス画像圧縮
イメージ スキャナが 16 ビット ピクセルのストリームを送信し、後でグレースケール イメージにアセンブルする組み込みアプリケーションがあります。このデータをローカルに保存し、ネットワーク インターフェイスに転送する必要があるため、データ ストリームを圧縮して、必要なストレージ スペースとネットワーク帯域幅を削減したいと考えています。
ピクセル データを可逆圧縮するために使用できる簡単なアルゴリズムはありますか?
最初に、連続する 2 つのピクセルの差を計算し、この差をハフマン コードでエンコードすることを考えました。残念ながら、ピクセルは符号なしの 16 ビット量であるため、差は -65535 .. +65535 の範囲のどこかにある可能性があり、コードワードの長さが巨大になる可能性があります。非常に長いコードワードが連続して発生すると、バッファ オーバーフローの問題が発生します。
更新: 私のプラットフォームは FPGA です
language-agnostic - Code Golf: 1x1 黒ピクセル
最近、お気に入りの画像エディターを使用して 1x1 の黒いピクセルを作成しました (これは、HTML で塗りつぶされたボックスを安価に描画したい場合に便利です)。モノクロPNGにしたのに120バイトになってしまった!つまり、それはちょっと急です。120 バイト。 1 ピクセルの場合。次に、それを GIF に変換すると、サイズが 43 バイトに減少しました。はるかに優れていますが、それでも...
チャレンジ
1x1 の黒ピクセルを生成する、または生成する最短の画像ファイルまたはプログラム。提出物は次のとおりです。
- 1x1 の黒ピクセルを表すイメージ ファイル。選択する形式は、1x1 よりも大きな画像を表現できる必要があり、アドホックであってはなりません (つまり、コード ゴルフ用に作成したばかりの画像形式であってはなりません)。画像ファイルはバイト数でランク付けされます。
- このような画像ファイルを生成するプログラム。プログラムは、通常のコード ゴルフと同様に、文字数によってランク付けされます。
回答がこれら 2 つのカテゴリのいずれかに該当する限り、すべてがフェア ゲームです。
また、画像ファイルの場合は、外部の画像ホストを使用するのではなく、16 進数またはエスケープで指定してください :-)
image-compression - 無損失画像圧縮 - 画像回復エラー
私の教授。は、C で書かれた 2 つのプログラムをくれました。ロスレス圧縮と解凍プログラムです。整数ウェーブレット変換 (Haar 関数のリフティング スキームを使用していましたが、後で Daubechies 5/3 int-to-int に変更しました) をコード ブロックに実装して、圧縮率を改善する必要があります。
彼が配布した元のプログラムにも存在する1つの間違いを除いて、変更されたプログラムではすべてがうまくいきました.
拡張子が *.bmp のいくつかの医療用画像の中で、関数をチェックすると違いはないと通知されますが、元の形に復元できない画像が 2 つあります(つまり、人間の顔ではなく、白黒のブロックがいくつか見えるだけです)。圧縮プロセスの前後のファイル間。
解凍後の残りの画像は、元の画像と同じに見えることに注意してください。
これらの画像はhttp://s844.photobucket.com/home/mirosehでご覧いただけます。月面とゼルダ(少女)は苦手。胸部レントゲンはバッチリ。
皆様からの解決策をお待ちしております。私は何週間もこれに固執しました。
次のように、create_matrix_image (compress.cpp 内) と restorebmp 関数 (decompress.cpp 内) を添付します。
これらがまだ曖昧な場合は、ソース コードと灰色のイメージをここからダウンロードできます。
Borland C/C++ 5.02 コンパイラを使用することをお勧めします: http://www.mediafire.com/?njmm1ovenmm
ご検討をお願いいたします。
php - 特定のファイルサイズで画像を保存する方法は?
ユーザーが視覚的に複雑なイメージを作成できる PHP システムを構築していますが、最終的な要件は50kB 以下です。
ユーザーは、37 のテンプレート イメージの 1 つにテキストを印刷することを選択できるため、結果は 1 つのフラット イメージになります。
テキストは、任意の色と多数のフォントのいずれかにすることができます。これは、最終的な画像が非常に視覚的に複雑で予測不可能になる可能性があることを意味します (画像の寸法を除く)。
次に、最終的な画像ファイルのサイズが 50kB を超えないようにする必要があります (これは外部要件であり、変更できません)。
最後の要件 (これも外部) は、画像形式が.jpeg、.png、または .gif でなければならないことです。
私はGraphicsMagickのドキュメントを調べましたが、ファイルサイズを設定して圧縮を自動的に計算できることについて言及している場所が見つかりません。
これを圧縮->保存->テスト ループを介してプログラムで実行することを検討しましたが、事前に圧縮に基づいてファイルサイズを計算できるとは限らないため、これはかなりのプロセッサ集約型になると想像できます。これが、GraphicsMagick で問題が既に解決されているかどうかを確認するように求めている理由です。
編集
外部要件がある理由を明確にするために:
ユーザーはこのシステムを利用してフラット イメージを作成し、それを PC に保存します。この画像は、リターゲティング キャンペーンで使用するためにAdrollにアップロードされます。
画像に対するAdroll の要件は次のとおりです。私のシステムでは、728x90、300x250、および 120x600 の画像サイズしか提供されません。
2010年11月27日編集
これは GraphicsMagick では不可能と思われるため、この機能を提供できる可能性のある圧縮ライブラリ (libpng など) と直接接続するなど、他のソリューションを検討したいと考えています。
最後の手段として、これを達成できるアルゴリズムを調べて、自分で実装することもできます。
類推として、そのように傾倒している人のために:
私は A* が検索するものを求めています。明確な開始点と終了点があり、最短時間で可能な限り最適なルートを見つけます。
私が避けたいと思っていたのは、Breadth/Depth First が検索するものでした: 明確な開始点/終了点ですが、局所的な最小値を見つけると最適解にヒットしない可能性があり、計算上完全に吹き飛ばされる可能性があります。
jquery - ie8は、2番目の画像をアップロードすると、「オブジェクトはこのメソッドまたはプロパティをサポートしていません」というエラーを出します。
私はshift8creativeのアジャイルアップローダーを実装しようとしています。すべてが適切なブラウザで正常に動作しますが、つまり問題を引き起こしています。
ページはここにあります:https ://www.postadigi.com/pages/upload-order
jsエラーが強調表示している行はここにあります:
私はそれをonclick、jqueryクリック関数に入れてみました。同じエラー。
注意:最初の画像を圧縮してアップロードしますが、2番目の画像を選択してアップロードをクリックすると、失敗します。
java - イメージの作成/バイト配列への書き込みを高速化 (SWT)
SWT を使用して RAW ビットマップ イメージを JPEG に圧縮します。イメージを BufferedOutputStream に書き込んで、ソケット経由でバイトを送信しています。問題は、圧縮に時間がかかることです (約 150 ミリ秒)。プロセス全体をスピードアップするための提案はありますか?
java - ByteArrayOutputStream への Imageloader.save が非常に遅い
とにかく SWT のimageLoader.save()
-method を高速化する方法はありますか? 生の画像データを JPEG に圧縮する必要があります。1680 x 1050 ピクセルの大きな画像を圧縮するには、130 ~ 250 ミリ秒かかります。
私はベンチマークしているだけですimageLoader.save(bos, SWT.IMAGE_JPEG);
。
- 何か足りない?
- 大きなバイト配列/画像を圧縮する別の高速な方法はありますか?
どんな助けでもいただければ幸いです