我从一个服务器上获得一个图像,大小约为15MB,但我想保持长宽比但压缩文件的大小,因为我正在加载大约相同大小的多个文件?这些图像被下载为BitMaps和使用SetImageBitmap来显示图像如何压缩图像但不调整其大小使用Xamarin Android?
0
A
回答
-1
您可以使用其他文件格式(例如jpeg)压缩图像。 或者您可以在保持纵横比的同时调整图像大小。
1
你可以通过将图像转换为JPEG或PNG来做到这一点。这是快速和肮脏的实施位图PNG转换例程的:
它的前提上的文件扩展名,但可以很容易修改。
这里是我用来验证压缩的全样本:
public class MainActivity : Activity
{
public const string BITMAP_URL = @"http://www.openjpeg.org/samples/Bretagne2.bmp";
public string ResizeImage(string sourceFilePath)
{
Android.Graphics.Bitmap bmp = Android.Graphics.BitmapFactory.DecodeFile (sourceFilePath);
string newPath = sourceFilePath.Replace(".bmp", ".png");
using (var fs = new FileStream (newPath, FileMode.OpenOrCreate)) {
bmp.Compress (Android.Graphics.Bitmap.CompressFormat.Png, 100, fs);
}
return newPath;
}
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.Main);
Button button = FindViewById<Button> (Resource.Id.myButton);
button.Click += delegate {
System.Threading.Tasks.Task.Run(() => {
RunOnUiThread(() => Toast.MakeText(this, "Downloading file", ToastLength.Long).Show());
string downloadFile = DownloadSourceImage(BITMAP_URL);
RunOnUiThread(() => Toast.MakeText(this, "Rescaling image: " + downloadFile, ToastLength.Long).Show());
string convertedFile = ResizeImage(downloadFile);
var bmpFileSize = (new FileInfo(downloadFile)).Length;
var pngFileSize = (new FileInfo(convertedFile)).Length;
RunOnUiThread(() => Toast.MakeText(this, "BMP is " + bmpFileSize + "B. PNG is " + pngFileSize + "B.", ToastLength.Long).Show());
});
};
}
public string DownloadSourceImage(string url)
{
System.Net.WebClient client = new System.Net.WebClient();
string fileName = url.Split ('/').LastOrDefault();
string downloadedFilePath = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, fileName);
if (File.Exists (downloadedFilePath) == false) {
client.DownloadFile (url, downloadedFilePath);
}
return downloadedFilePath;
}
}
相关问题
- 1. 如何压缩图像但不调整大小使用Xamarin IOS?
- 2. 如何在Android中调整图像大小而不缩小?
- 3. 调整jpeg图像大小是否会影响其压缩?
- 4. 图像缩放调整大小IMAGEVIEW android
- 5. 使用压缩缩小图像大小不改变尺寸
- 6. 如何压缩图像大小?
- 7. Android如何调整其图像调整大小后的布局
- 8. Android - 如何压缩或缩小图像?
- 9. 图像大小调整 - 文件大小不像Python缩小
- 10. 为iOS压缩和调整大图像
- 11. Wordpress调整图像大小时如何缩小文件大小?
- 12. 如何缩小图像文件的大小而不压缩它?
- 13. Android图像调整大小
- 14. 如何在调整图像大小时调整图像大小使用drawImage
- 15. 在Java中调整图像大小以缩小图像大小
- 16. Php调整大小与图像GD不显示图像,但调整大小
- 17. 如何在不调整图像大小的情况下压缩PDF?
- 18. 如何使用CFImage调整大小并实际缩小图像文件大小?
- 19. 图像缩略图和调整大小
- 20. 调整图像大小和缩略图
- 21. C#简单图像调整大小:文件大小不缩小
- 22. Android - 压缩和解压缩图像的大小相同
- 23. PHP - 调整大小并压缩来自数据URI的图像
- 24. base64编码的图像压缩/调整大小
- 25. 在Java中的图像压缩和调整大小
- 26. Silverlight 4.0 - 图像调整大小和压缩速度
- 27. 用Java调整图像大小。如何调整大小
- 28. 如何调整图像大小,使其像原来的光滑
- 29. 如何使图像调整大小
- 30. 照片大小调整和压缩
为了澄清,你想在磁盘上压缩文件的大小或减少一般图像的尺寸(宽度和高度)? – matthewrdev
我只想压缩文件大小,而不是更改尺寸。 – Ash