ユーザーがアプリケーションをサーバーPCにインストールし、インストールディレクトリをネットワークドライブZ:として共有し、ショップ全体のさまざまなクライアントPCからアプリを開きます。PCの1つにある厄介なバグを除いて、すべてが正常に機能します。
問題のあるPCでは、アプリは.jpg
在庫アイテムのファイルを正常にロードし、対応するQPixmapをQLabelに表示できます。現在表示しているインベントリアイテムにまだ画像が割り当てられていない場合は、ファイルダイアログを開き、画像を選択して正しく表示できます。ただし、(新規/変更された)QPixmapを保存すると、黒の背景に一連の色付きの垂直線としてディスクに保存.jpg
されます。
保存はQPixmap::save( const QString & fileName, ...)
、プログラムで「<some_id>.jpg
」に設定されたファイル名を使用して行われ、目的のファイル形式を指定します。を返しますtrue
が、結果のファイルは現代美術のように見えます。
ただし、画像の保存はサーバーと他のクライアントでは正常に機能します。
サーバーとProblemPCの両方が、同じパッチレベルでWindowsXPを実行します。
dnsapi.dll
Process Explorerは、サーバーが使用していない問題のあるPCを除いて、サーバーと問題のあるPC上のアプリプロセスに対して同一のDLLを表示します。
Process Explorerは、サーバーとクライアントの両方でJPEGの処理に使用されるQt DLLが
\Device\LanmanRedirector\<server>\<app>\plugins\imageformats\qjpeg4.dll
であり、Problem PCでのドライブ全体の検索がqjpeg*.dll
空であるため、アプリは両方のコンピューターで同じJPEG処理コードを使用する必要があることも示しています。
助言がありますか?
(編集:問題の説明にOSとパッチのステータスを追加しました。)
編集:解決策:問題のあるマシンでは、16bppの色深度がありました。これを32bppに設定すると、問題はすぐに解決しました。
また、32 bpp未満で実行されているすべての古いクライアントPCでこれに遭遇しないように、に置き換えまし
_pm.save( sDestFileName )
た。
_pm.toImage().convertToFormat( QImage::Format_RGB32 ).save( sDestFileName )