Я использую ZXing для генерации QR-кода. Это то, что мой код выглядит следующим образом:Как установить размер растрового изображения в ZXing?
public partial class QRPage : ContentPage
{
public QRPage()
{
InitializeComponent();
var stream = DependencyService.Get<IBarcodeService>().ConvertImageStream("nika");
qrImage.Source = ImageSource.FromStream(() => { return stream; });
qrImage.HeightRequest = 200;
}
}
И с другой стороны:
[assembly: Xamarin.Forms.Dependency(typeof(BarcodeService))]
namespace MyApp.Droid
{
public class BarcodeService : IBarcodeService
{
public Stream ConvertImageStream(string text, int width = 500, int height = 500)
{
var barcodeWriter = new ZXing.Mobile.BarcodeWriter
{
Format = ZXing.BarcodeFormat.QR_CODE,
Options = new ZXing.Common.EncodingOptions
{
Width = width,
Height = height,
Margin = 2
}
};
barcodeWriter.Renderer = new ZXing.Mobile.BitmapRenderer();
var bitmap = barcodeWriter.Write(text);
var stream = new MemoryStream();
bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100, stream);
stream.Position = 0;
return stream;
}
}
}
Вот является XAML, где я использую код:
<StackLayout Padding="20,30,20,30">
<Label Text="..." FontSize="Medium "/>
<Frame VerticalOptions="CenterAndExpand">
<Image x:Name="qrImage" WidthRequest="300" />
</Frame>
...
</StackLayout>
Проблема заключается в том, что независимо от того, что я задаю как высоту и ширину для ConvertImageStream
, результирующее изображение не является квадратным, а выглядит примерно так:
Как я могу превратить его в квадрат? Заранее спасибо.
какие-либо предложения о том, почему это выглядит как то, что я писал в моем приложении? – nicks
@NikaGamkrelidze Можете ли вы опубликовать свой xaml (или код) для этой страницы в своем вопросе или сначала попробуйте код страницы в моем ответе, чтобы узнать, получаете ли вы тот же результат, что и я ... – SushiHangover
см. В редакции для кода XAML – nicks