次のような URL から画像を読み込んでいます。
new ImageIcon(new URL(url))
URL はhttp://example.com/image.pngの行に沿ったものなので、インターネット上の画像です。
これは問題なく動作しますが、私のプログラムのユーザーから、Java 8u20 (およびおそらくそれ以降) の Retina ディスプレイでプログラムを使用すると、通常の画像ではなく奇妙な画像が表示されるという報告がいくつか寄せられています。
彼らが取得している奇妙な画像は、画像が見つからない場合に、画像が読み込まれた CDN が自動的にリダイレクトする画像であると判断しました。Toolkit.getImage(URL url)
いくつかの調査の結果、Java の新しいバージョンでは、new ImageIcon(URL url)
.
もちろん問題は、画像が見つからない場合に CDN が実際に有効な画像を返すことです。そのため、Java はおそらく Retina ディスプレイで使用する高解像度の画像を実際に見つけたと考えます。私のプログラムの他の画像もImageIcon
同じように使用されますが、別のソースから読み込まれますが、問題なく動作するようです。
問題は、これを解決する最善の方法は何でしょうか? 私は CDN にアクセスできないので、Java が何らかの方法で 2 番目の URL を読み込もうとするのを防ぐ必要があります (それが実際に問題である場合は、確かにそのように見えます)。残念ながら、これをテストするためのコンピューターを持っていないため、どのソリューションが機能するかを判断するのは少し難しい.