Android:从实际尺寸的服务器下载图像

时间:2015-10-12 05:39:30

标签: android

我正在从服务器下载图像并将其存储在我的i​​nternal_storage文件夹中。但下载的图像尺寸为(宽度800 *高度534)像素,而internal_storage图像尺寸为(宽度) 400 *身高267)。为什么不以实际大小的像素存储图像大小(宽度800 *高度534)

以下是我从服务器下载图片的代码

str_DownLoadUrl = "http://103.24.4.60/CLASSNK1/MobileService.svc/DownloadFile/FileName/3_20150928162252018.png";

 download_PngFile(str_DownLoadUrl);

    void download_PngFile(String fileUrl) {

            try {
                URL ImgUrl = new URL(fileUrl);
                HttpURLConnection conn = (HttpURLConnection) ImgUrl.openConnection();
                conn.connect();

                BitmapFactory.Options options = new BitmapFactory.Options();
                options.inSampleSize = 2;
                Bitmap imagenObtenida = BitmapFactory.decodeStream(conn.getInputStream(), null, options);


                File file = new File(newFolder, imageName);

                if (file.exists()) file.delete();
                try
                {
                    FileOutputStream out = new FileOutputStream(file);
                    imagenObtenida.compress(Bitmap.CompressFormat.PNG, 100, out);
                    out.flush();
                    out.close();
                    int imagenObtenidaW = imagenObtenida.getWidth();
                    int imagenObtenidaH = imagenObtenida.getHeight();
                    Log.e("imagenObtenidaW " ," = +" + imagenObtenidaW + " imagenObtenidaH = " + imagenObtenidaH);

                } catch (Exception e) {

                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

4 个答案:

答案 0 :(得分:1)

会发生这种情况,因为您使用BitmapFacotory选项inSampleSize的选项属性。当您使用inSampleSize = 2时,您的图片将变为原始高度和宽度的1/2 。因此,要保持原始尺寸,您需要将其设置为1,或者只需删除它并在null函数中以decodeStream传递。

答案 1 :(得分:0)

options.inSampleSize = 2;

docs说 - 如果设置为值>如图1所示,请求解码器对原始图像进行二次采样,返回较小的图像以节省存储器。

所以尝试将其设置为1并查看是否有帮助

答案 2 :(得分:0)

为什么不使用Picasso而不是编写自定义代码,到目前为止,请查看它是非常简单和强大的库。

答案 3 :(得分:0)

尝试这种方式,只需按照http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

进行操作即可
sqlcmd = New SqlCommand("SELECT Column1 from Table", con)
sqldr = sqlcmd.ExecuteReader
TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
While sqldr.Read
    TextBox1.AutoCompleteCustomSource.Add(sqldr("Column1").ToString())
End While

Aquery也用于图像加载,下载aquery jar并将其导入项目并尝试这种方式

BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeResource(getResources(), R.id.myimage, options);
    int imageHeight = options.outHeight;
    int imageWidth = options.outWidth;
    String imageType = options.outMimeType;