私のアプリケーションでは、ユーザーからの画像を受け入れています。イメージが指定されたサイズを超える場合、適切なサイズに縮小してデータベースに保存します。私は画像をスケーリングするために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. GTKで画像の拡大/縮小
- 7. アンドロイドで画像拡大のサポートをリストアップ
- 8. UIScrollViewでレイアウトフレームの画像を拡大
- 9. 大きなJPEG/PNG画像シーケンスループ
- 10. 画像を拡大する
- 11. HTML画像マップを拡大
- 12. 画像を拡大する
- 13. 他のPNGでPNG画像をペイント
- 14. Android Layout Managerの画像の拡大
- 15. ピクチャボックス内の画像を拡大する
- 16. JavaScriptとHTML5の画像拡大
- 17. プレビュー内の画像を拡大
- 18. IEで画像を拡大する
- 19. Android:クリックで画像を拡大する
- 20. dvで画像を拡大する
- 21. Windowsストアアプリで画像を拡大する
- 22. Xlibで画像を遠くに拡大
- 23. Jqueryプラグインなしで画像を拡大
- 24. iOSでウェブ画像を拡大する
- 25. HTML5キャンバスで画像を拡大する
- 26. PrimeFacesで画像を拡大する
- 27. アンドロイドで画像を拡大する
- 28. 画面の中央にScaleAnimationで画像を拡大する
- 29. 画像を中央に拡大する
- 30. JQuery Mobile:画像を拡大する
また、このイメージをバイトに変換し、これらのバイトを使用して次回に再レンダリングする必要があります。この場合、このテクニックは使えますか? –