建体彩网|中彩网双色球连号|
?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

和記娛樂安卓下載和:【Windows Phone實用開發教程】32、照片角度處理示例

?

在實際項目中,可能必要用戶從相冊中選擇圖片然落和記娛樂安卓下載和后行響應的處置懲罰。然則不知道大年夜家有沒有發明這樣一種環境,便是手機里看是豎著的,然則上傳到微博或者哪里的時刻確鑿橫著的。一種環境是你拿手機豎著攝影得話,照片便是橫著的,雖然在手機里看是豎著的。(可能有點抽象,碰到此環境的同硯應該深有感觸)

那么我們在客戶端中應該若何處置懲罰這種環境呢?一種設法主見是獲取圖片的角度,假如是90°,就把照片翻轉過來,再進行響應的操作。那這樣就涉及到2個問題

1. 若何獲取相冊中照片的角度

2. 若何翻轉已有的照片(流、或者Bitmap或者WriteableBitmap)

查看了系統的API,并沒有對相片的角度供給支持,然則我們可以應用ExifLib開源庫去做。

下述的措施便是獲取拔取圖片的角度的

///

/// get angle of photo ///

///

photo stream ///

photo name

/// angle of the photo public static int GetAngle(Stream stream, string filename)

{ExifLib.ExifOrientation _orientation;

int _angle = 0;stream.Position = 0;

JpegInfo info = ExifReader.ReadJpeg(stream, filename);if (info!=null)

{_orientation = info.Orientation;

switch (info.Orientation){

case ExifOrientation.TopLeft:case Exi和記娛樂安卓下載和fOrientation.Undefined:

_angle = 0;break;

case ExifOrientation.TopRight:_angle = 90;

break;case ExifOrientation.BottomRight:

_angle = 180;break;

case ExifOrientation.BottomLeft:_angle = 270;

break;

}}

return _angle; }

獲取到角度后,假如角度是90°,等于反的,我們必要將其矯正過來,可以應用如下的措施:

private Stream RotateStream(Stream stream, int angle)

{stream.Position = 0;

if (angle % 90 != 0 || angle throw new ArgumentException();if (angle % 360 == 0) return stream;

BitmapImage bitmap = new BitmapImage();

bitmap.SetSource(stream);WriteableBitmap wbSource = new WriteableBitmap(bitmap);

WriteableBitmap wbTarget = null;

if (angle % 180 == 0){

wbTarget = new WriteableBitmap(wbSource.PixelWidth, wbSource.PixelHeight);}

else{

wbTarget = new WriteableBitmap(wbSource.PixelHeight, wbSource.PixelWidth);}

for (int x = 0; x

{for (int y = 0; y

{switch (angle % 360和記娛樂安卓下載和)

{case 90:

wbTarget.Pixels[(wbSo和記娛樂安卓下載和urce.PixelHeight - y - 1) + x * wbTarget.PixelWidth] = wbSource.Pixels[x + y * wbSource.PixelWidth];break;

case 180:wbTarget.Pixels[(wbSource.PixelWidth - x - 1) + (wbSource.Pixel和記娛樂安卓下載和Height - y - 1) * wbSource.PixelWidth] = wbSource.Pixels[x + y * wbSource.PixelWidth];

break;case 270:

wbTarget.Pixels[y + (wbSource.PixelWidth - x - 1) * wbTarget.PixelWidth] = wbSource.Pixels[x + y * wbSource.PixelWidth];break;

}}

}MemoryStream targetStream = new MemoryStream();

wbTarget.SaveJpeg(targetStream, wbTarget.PixelWidth, wbTarget.PixelHeight, 0, 100);return targetStream;

}

Demo源代碼下載

原文Handling picture orientation in CameraCaptureTask in Windows Phone 7

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

建体彩网
qq彩票苹果 3d中奖多少钱 湖北快三开奖结果今天 青海11选5前三直遗漏 广东时时彩11选5 青海快3 快乐12开奖走势图辽宁省 一尾中特平是什么意思 山东11选5 青海快3今天开奖号码