1

私は Windows Phone 開発のグリーンホーンのようなもので、プロジェクトに既に組み込まれている画像をトリミングする方法を探していました (おそらくいつかカメラからでも)。しかし、私が見つけたすべてのパッケージには次のいずれかがありますVisual Studio で大騒ぎしたか、引数の例外をスローしました。そのため、独自の関数を作成することにしました。

しかし、どこから始めればよいか、まったくわかりません。WriteableBitmap がそれと関係があり、次のコードと関係があると確信しています。

Application.GetResourceStream(new Uri("/PhoneApp3;component/Assets/Flowers/Daff.jpg"));

では、ピクセル データを取得するか、新しい画像を作成してピクセル データを適用することから始めるにはどうすればよいでしょうか。最後に、結果を保存し、UI の画像要素を介して参照するにはどうすればよいでしょうか。

4

2 に答える 2

3

Windows Phone で画像をトリミングするには、 WriteableBitmapExを使用します。ソリューションが機能する必要がある方法は、WritableBitmap.Pixels プロパティを操作することです。最初に画像を読み込み、Pixels プロパティを変更して、生のピクセルを JPG や PNG などの保存された画像形式に変換します。これは大変な作業なので、幸運にも WriteableBitmapEx がそれを行います。

まず、NuGet から WritebleBitmapEx をインストールします。

インストール パッケージ WriteableBitmapEx

次に、任意の画像を読み込んでトリミングし、MediaLibrary に保存し直すことができます。たとえば、アプリの XAP からファイルをロードし、画像の左上 25% をトリミングして、WP7/8 アルバムの「保存された画像」に保存する方法を次に示します。

private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    var bmp = new WriteableBitmap(0, 0).FromContent("Assets/ApplicationIcon.png");
    var croppedBmp = bmp.Crop(0, 0, bmp.PixelWidth/2, bmp.PixelHeight/2);
    croppedBmp.SaveToMediaLibrary("myImage.jpg");
}

このコードを実行すると、新しくトリミングされた画像が表示されます。

トリミングされた画像

于 2013-01-24T01:42:03.523 に答える
1

私は最近これを行う必要があり、外部ライブラリを使用したくありませんでした。Microsoft は、MSDN でその方法の良い例を提供しています (また、メモリ リークを引き起こさない点でも非常に優れています!)。

http://code.msdn.microsoft.com/wpapps/Photos-Sample-a38a2c8e

乾杯、ウィル

于 2013-09-19T08:41:10.690 に答える