2016-11-10 21 views
2

イメージをサーバーにアップロードしようとしています。しかし、アップロードを実行する前に、イメージのサイズが2MBを超えているかどうかを確認します。 は、活動の結果から画像を受け取った後、私は次のコードバイト配列を使用してイメージのサイズを確認してください

Bitmap bitmap = MediaStore.Images.Media.GetBitmap(this.Activity.ContentResolver, uri); 
           //int imageSize = 79030; 
           //float size = (bitmap.RowBytes * bitmap.Height)/1024; 
           //float seasonDrop = size/10000; 
           //double actualsizeMb = Math.Round(seasonDrop, 1); 
           // Rotate the image if required. Samsung devices have an Exif property that usually rotates the image. 
     bitmap = rotateImageIfRequired(bitmap, this.Activity, uri); 
     int size = bitmap.ByteCount; 
     var bytesize = bitmap.RowBytes * bitmap.Height; 
     var buffer = Java.Nio.ByteBuffer.Allocate(bytesize); 
     bitmap.CopyPixelsToBuffer(buffer); 
     buffer.Rewind(); 
     var bytes = new byte[bytesize]; 
     float length = bytes.Length/(1024 * 1024); 

私が試してみて、1.96メガバイトの画像をアップロードを実行します。しかし、私が長さにブレークポイントを置くとき、私が戻ってくる値は10MBです。このようにイメージのサイズを大きくすることはできません。

+0

'正確に1.96メガバイトは何1.96メガバイトのimage'をアップロード? – greenapps

+0

'画像をサーバーにアップロードしようとしています。あなたは、ビットマップのすべてのピクセルをアップロードしようとします。あなたはそのビットマップがどこから来るのかを知らなかった。しかし、あなたがファイルをアップロードして、それらのファイルを直接アップロードしたいのであれば、BitmapFactoryまたはBitmapsを使いこなすことをやめてください。 – greenapps

+0

サーバーは何を受信したいのですか?デコードできないファイルまたはバイトストリーム?それともできますか? – greenapps

答えて

1

1.9 MBは圧縮されている可能性があります(画像がjpegまたはpng形式で圧縮されている可能性があります)。ビットマップサイズをチェックすると、イメージの圧縮されていないサイズがチェックされます。これは圧縮されたサイズよりもはるかに大きくなります。ファイル参照を取得したら、画像をビットマップに変換せずにそのままファイルのサイズを確認してください。 .NET FileInfo.Lengthプロパティを使用して、イメージファイルの圧縮サイズを確認できます。

https://msdn.microsoft.com/en-us/library/system.io.fileinfo.length(v=vs.110).aspx

上記のリンクから:

// Make a reference to a directory. 
DirectoryInfo di = new DirectoryInfo("c:\\"); 
// Get a reference to each file in that directory. 
FileInfo[] fiArr = di.GetFiles(); 
// Display the names and sizes of the files. 
Console.WriteLine("The directory {0} contains the following files:", di.Name); 
foreach (FileInfo f in fiArr) 
     Console.WriteLine("The size of {0} is {1} bytes.", f.Name, f.Length); 
関連する問題