WPF にイメージ コントロールがあります。画像サイズ コントロールの幅と高さを減らす必要があります。しかし、私がそれをすると、画像は見栄えがよくありません。データ損失はさらに大きくなります。
そのため、画像コントロールの幅と高さを変更するだけでなく、画像の解像度を下げることを考えました。
WPFイメージコントロールでバインドされたイメージのイメージ解像度を変更する方法を教えてください
[つまり、画像は既に画像コントロールにバインドされているので、解像度のみを変更する必要があります]
WPF にイメージ コントロールがあります。画像サイズ コントロールの幅と高さを減らす必要があります。しかし、私がそれをすると、画像は見栄えがよくありません。データ損失はさらに大きくなります。
そのため、画像コントロールの幅と高さを変更するだけでなく、画像の解像度を下げることを考えました。
WPFイメージコントロールでバインドされたイメージのイメージ解像度を変更する方法を教えてください
[つまり、画像は既に画像コントロールにバインドされているので、解像度のみを変更する必要があります]
.NET 4では、デフォルトの画像スケーリングを低品質のものに変更しました...そのためBitmapScalingMode
、高品質のものに戻すために使用できます。
<Image RenderOptions.BitmapScalingMode="HighQuality"
Source="myimage.png"
Width="100"
Height="100" />
ソース画像が巨大な画像である場合は、上記をデコードオプションなどの他のオプションと組み合わせることもできます(これにより、アプリケーションのメモリ使用量が削減されます)。
「ぼやけ」を防ぐための他のオプションはUseLayoutRounding="True"
、ルート要素(つまりウィンドウ)を配置することです。...これを.NET4で使用することをお勧めしますSnapToDevicePixels
。
次のように DecodePixelWidth プロパティを使用できます。
<Image Stretch="Fill">
<Image.Source>
<BitmapImage CacheOption="OnLoad" DecodePixelWidth="2500" UriSource="Images/image.jpg"/>
</Image.Source>
</Image>
1) ViewBox を試してください: ViewBox 内に画像を配置します。
2) 特に低解像度のデバイスでは、ピクセルの配置の問題により、レンダリング エンジンの品質が低下することがあります。SnapsToDevicePixels プロパティを見て、それを含むコントロールで true に設定し、ViewBox で AND / OR に設定してみてください。
3) 明らかに、解像度の変更を実行するコントロールを作成できますが、かなりの作業が必要です。
これを試して。
Image img = new Image();
var buffer = System.IO.File.ReadAllBytes(_filePath);
MemoryStream ms = new MemoryStream(buffer);
BitmapImage src = new BitmapImage();
src.BeginInit();
src.StreamSource = ms;
src.DecodePixelHeight = 200;//Your wanted image height
src.DecodePixelWidth = 300; //Your wanted image width
src.EndInit();
img.Source = src;