私のアプリケーションでは、ユーザーからの画像を受け入れています。イメージが指定されたサイズを超える場合、適切なサイズに縮小してデータベースに保存します。私は画像をスケーリングするためにFJCoreライブラリを使用しています。ライブラリはJPEG画像でうまく動作します。しかし、PNG画像はサポートしていません。ライブラリが最近更新されていないようです。 Silverlightでどのようにこれを行うことができますか?シルバーライトでのPNG画像の拡大
0
A
答えて
0
新しいImageエレメントを作成し、そのソースをストリームから作成したWriteableビットマップに設定しますが、このImageエレメントをビジュアルツリーに追加しないでください。必要な最終サイズの別のWriteableBitmapを作成し、Image要素とScaleTransformを渡してこのWriteableBitmapでレンダリングを呼び出し、イメージを適切なサイズにリサイズします。次に、2番目のWriteableBitmapを2番目のImage要素のソースとして使用して、それをビジュアルツリーに追加することができます。
0
私はWriteableBitmapExプロジェクトでこれを達成しました。誰かがそれを必要とするなら、ここにコードがあります。
private void ShowCustomImageButton_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openDialog = new OpenFileDialog();
openDialog.Multiselect = false;
openDialog.Filter = "PNG Files|*.PNG";
bool? userClickedOK = openDialog.ShowDialog();
if (userClickedOK == true)
{
BitmapImage image = new BitmapImage();
// get image that user has selected.
image.SetSource(openDialog.File.OpenRead());
WriteableBitmap wrtbmp = new WriteableBitmap(image);
// resize image if needed.
wrtbmp = wrtbmp.Resize(64, 64, WriteableBitmapExtensions.Interpolation.NearestNeighbor);
var img = wrtbmp.ToImage();
// convert image into file stream.
Stream filestram = img.ToStream();
filestram.Position = 0;
using (filestram)
{
// convert file stream into memory stream.
var memoryStream = new MemoryStream();
byte[] aryBuffer = new byte[16384];
int nRead = filestram.Read(aryBuffer, 0, aryBuffer.Length);
while (nRead > 0)
{
memoryStream.Write(aryBuffer, 0, nRead);
nRead = filestram.Read(aryBuffer, 0, aryBuffer.Length);
}
// use following line to convert in bytes and save into database.
memoryStream.ToArray();
imgCustomImage.Source = CreateBitmapImage(memoryStream);
}
}
}
private BitmapImage CreateBitmapImage(MemoryStream memoryStream)
{
if ((memoryStream == null) || (memoryStream.Length == 0))
return null;
var image = new BitmapImage();
image.SetSource(memoryStream);
return image;
}
関連する問題
- 1. シルバーライトでのダイナミック画像ソースバインディング
- 2. 画像拡大
- 3. シルバーライトで画像を追加
- 4. モバイルバックグラウンド画像拡大
- 5. スケールダウン拡大画像
- 6. ホバーの画像を拡大
- 7. 拡大時のコントラスト画像
- 8. Fancyboxハイパーリンクの拡大画像
- 9. ScrollViewで画像を拡大
- 10. 画像ズーム/サムネイルで拡大
- 11. 画像を拡大画像にパック
- 12. Rマークダウンでオンザフライで作成されたPNG画像を拡大します。
- 13. アンドロイドアプリケーションでのスナップチャットフィルタ画像のような画像サイズの拡大
- 14. GTKで画像の拡大/縮小
- 15. UIScrollViewでレイアウトフレームの画像を拡大
- 16. アンドロイドで画像拡大のサポートをリストアップ
- 17. 大きなJPEG/PNG画像シーケンスループ
- 18. 画像を拡大する
- 19. 画像を拡大する
- 20. HTML画像マップを拡大
- 21. 他のPNGでPNG画像をペイント
- 22. イオンのピンチと画像の拡大
- 23. Android Layout Managerの画像の拡大
- 24. ブートストラップ画像全体を拡大するために画像を拡大する
- 25. WebPACKのPNG画像
- 26. グレースケールのPNG画像
- 27. 拡大画像複数画像のAjax更新後のモデル
- 28. Oracle APEX:画像を画面に拡大
- 29. 画像の拡大/縮小OSX Swift
- 30. JavaScriptとHTML5の画像拡大
また、このイメージをバイトに変換し、これらのバイトを使用して次回に再レンダリングする必要があります。この場合、このテクニックは使えますか? –