我正在从PhotoChooserTask读取一张图片,并有一张照片流。 我必须缩小图像的大小
我写这段代码
WriteableBitmap writeableBitmap = new WriteableBitmap(400, 400);
writeableBitmap.LoadJpeg(stream);
using (var isoFile = IsolatedStorageFile.GetUserStoreForApplication())
{
if (isoFile.FileExists("Myfile.jpg")) isoFile.DeleteFile("Myfile.jpg");
using (var filestream = isoFile.CreateFile("Myfile.jpg"))
{
writeableBitmap.SaveJpeg(filestream, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight, 0, 100);
}
}
此代码不保持图像的宽高比。
如何制作?
答案 0 :(得分:0)
首先将源图像加载到writeableBitmap(不调整大小)。
然后获取源宽度(PixelWidth)和全高(PixelHeight)。将PixelWidth与PixelHeight分开将为您提供比率。调整大小时可以使用此值。
所以:
float aspectRatio = (float) writeableBitmap.PixelWidth / writeableBitmap.PixelHeight;
然后保存时才做
writeableBitmap.SaveJpeg(filestream, ResizedWidthValue, (int) ResizedWidthValue / aspectRatio, 0, 100);
答案 1 :(得分:0)
@ertay
我写这段代码
using (var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
WriteableBitmap wb = BitmapFactory.New(0, 0);
wb.FromStream(isolatedStorage.OpenFile("1.jpg", FileMode.Open, FileAccess.Read));
IsolatedStorageFileStream fileStream= isolatedStorage.CreateFile("1_thumb.jpg");
float aspectRatio = (float)wb.PixelWidth / wb.PixelHeight;
wb.SaveJpeg(fileStream, 200, (int) (200 / aspectRatio), 0, 100);
fileStream.Close();
wb = null;
}
但是wb.PixelWidth和wb.PixelHeight = 0 !!
为什么?