2

サーバーから ImageIcon オブジェクトを送受信する場所を作成してjava rmi based applicationいます... (画像はサーバーの別の URL に保存されます)

関数には次のものが含まれます....

        1.  Getting the image from the server at first....(on button press A)
        2.  Replacing it with a image file in the client[optional]....(on button press B)
        3.  Remove the image with a default image[optional]....(on button press C) 
        4.  Sending it back to the Server....................(On button press D).....

ここでは、画像がjlabel 呼び出されて表示されますimg_label

私が使用したコードは次のとおりです.....

使用される変数

                   java.awt.Image img;
                   javax.swing.ImageIcon CurrentImageIcon;
                   javax.swing.ImageIcon DefaultImageIcon;
                   // CurrentImageIcon contains the image to be displayed in the img_label....
                   // img is used for copying as well for scaling......
                   // DefaultImageIcon holds the default Image......

ボタンを押すとA

                   img = temp.getImage();
                   CurrentImageIcon = new ImageIcon(img);
                   // Assuming temp holds the ImageIcon taken from the server.......

                   img=img.getScaledInstance(83,85 , Image.SCALE_DEFAULT);
                   img_label.setIcon(new ImageIcon(img));
                   img_label.revalidate();
                   img_label.repaint();

ボタンを押すとB

                   String url_text = jTextField.getText(); // taking the url frm the field.....
                   CurrentImageIcon = new ImageIcon(url_text);

                   img=CurrentImageIcon.getImage();
                   img=img.getScaledInstance(83,85 , Image.SCALE_DEFAULT);
                   img_label.setIcon(new ImageIcon(img));
                   img_label.revalidate();
                   img_label.repaint();

ボタンを押すと C

                   img = DefaultImageIcon.getImage();
                   CurrentImageIcon = new ImageIcon(img);
                   img=img.getScaledInstance(83,85 , Image.SCALE_DEFAULT);
                   img_label.setIcon(new ImageIcon(img));
                   img_label.revalidate();
                   img_label.repaint();

ボタンを押すと D

                   // ImagetoSend is an ImageIcon to be sent to the Server.....
                   ImagetoSend = CurrentImageIcon;
                   CurrentImageIcon = null;

今、私が得ている問題は奇妙なものです...... このボタンをクリックすると、再描画で必要に応じて画像が埋め込まれます........

But when i download the recently uploaded image next time on Button press A....it is displayed either magnified or reduced to size even though i included the getScaledInstance method.... このような...

画像をクリックすると。 正しく埋め込まれます ここに画像の説明を入力

私が扱っている画像はjpg画像です....サーバーディレクトリで画像を確認しました...クライアントからサーバーにアップロードされたファイルのサイズは変更されていません。しかし、ダウンロードしてjlabelに埋め込むと、変更が観察されます... 誰でもこの問題を解決するのを手伝ってくれますか...??

4

1 に答える 1

1

どういうわけか、2倍に縮小されています。縮小してからサーバーに送信して縮小するか、両方のボタンをクリックして縮小します。サーバー側のスケール ダウン コードを削除し、何が起こるかを確認します。

于 2012-07-05T15:28:24.407 に答える