コード例 #1
0
        private async void UploadAvatar(object sender, RoutedEventArgs e)
        {
            var picker = new Windows.Storage.Pickers.FileOpenPicker();

            picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
            picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
            picker.FileTypeFilter.Add(".jpg");
            picker.FileTypeFilter.Add(".jpeg");
            picker.FileTypeFilter.Add(".png");

            StorageFile file = await picker.PickSingleFileAsync();

            if (file != null)
            {
                try
                {
                    ViewModel.AvatarUrl    = file.Path;
                    ViewModel.Base64Avatar = "data:" + file.ContentType + ";base64," +
                                             Convert.ToBase64String(await ImageParsing.FileToBytes(file));
                }

                // Mainly for rate limit
                catch
                {
                }
            }
        }
コード例 #2
0
    private static (byte[]?, int, int) GetTexRgbaData(string path, bool fromDisk)
    {
        try
        {
            if (fromDisk)
            {
                var tmp = new TmpTexFile();
                using var stream = File.OpenRead(path);
                using var br     = new BinaryReader(stream);
                tmp.Load(br);
                return(tmp.RgbaData, tmp.Header.Width, tmp.Header.Height);
            }


            var tex = fromDisk ? Dalamud.GameData.GameData.GetFileFromDisk <TexFile>(path) : Dalamud.GameData.GetFile <TexFile>(path);
            if (tex == null)
            {
                return(null, 0, 0);
            }

            var rgba = tex.Header.Format == TexFile.TextureFormat.A8R8G8B8
                ? ImageParsing.DecodeUncompressedR8G8B8A8(tex.ImageData, tex.Header.Height, tex.Header.Width)
                : tex.GetRgbaImageData();
            return(rgba, tex.Header.Width, tex.Header.Height);
        }
        catch (Exception e)
        {
            PluginLog.Error($"Could not parse TEX {path} to RGBA:\n{e}");
            return(null, 0, 0);
        }
    }
コード例 #3
0
        private async void UploadAvatar(object sender, RoutedEventArgs e)
        {
            var picker = new Windows.Storage.Pickers.FileOpenPicker();

            picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
            picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
            picker.FileTypeFilter.Add(".jpg");
            picker.FileTypeFilter.Add(".jpeg");
            picker.FileTypeFilter.Add(".png");

            StorageFile file = await picker.PickSingleFileAsync();

            if (file != null)
            {
                GuildIconImage.ImageSource = await LoadImage(file);

                ViewModel.UpdateIcon("data:" + file.ContentType + ";base64," +
                                     Convert.ToBase64String(await ImageParsing.FileToBytes(file)));
            }
        }
コード例 #4
0
ファイル: DdsFile.cs プロジェクト: xivdev/Penumbra
 private byte[] ParseToRgba()
 {
     return(ParseType switch
     {
         ParseType.Unsupported => Array.Empty <byte>(),
         ParseType.DXT1 => ImageParsing.DecodeDxt1(MipMap(0), Header.Height, Header.Width),
         ParseType.DXT3 => ImageParsing.DecodeDxt3(MipMap(0), Header.Height, Header.Width),
         ParseType.DXT5 => ImageParsing.DecodeDxt5(MipMap(0), Header.Height, Header.Width),
         ParseType.BC4 => ImageParsing.DecodeBc4(MipMap(0), Header.Height, Header.Width),
         ParseType.BC5 => ImageParsing.DecodeBc5(MipMap(0), Header.Height, Header.Width),
         ParseType.Greyscale => ImageParsing.DecodeUncompressedGreyscale(MipMap(0), Header.Height, Header.Width),
         ParseType.R4G4B4A4 => ImageParsing.DecodeUncompressedR4G4B4A4(MipMap(0), Header.Height, Header.Width),
         ParseType.B4G4R4A4 => ImageParsing.DecodeUncompressedB4G4R4A4(MipMap(0), Header.Height, Header.Width),
         ParseType.R5G5B5 => ImageParsing.DecodeUncompressedR5G5B5(MipMap(0), Header.Height, Header.Width),
         ParseType.B5G5R5 => ImageParsing.DecodeUncompressedB5G5R5(MipMap(0), Header.Height, Header.Width),
         ParseType.R5G6B5 => ImageParsing.DecodeUncompressedR5G6B5(MipMap(0), Header.Height, Header.Width),
         ParseType.B5G6R5 => ImageParsing.DecodeUncompressedB5G6R5(MipMap(0), Header.Height, Header.Width),
         ParseType.R5G5B5A1 => ImageParsing.DecodeUncompressedR5G5B5A1(MipMap(0), Header.Height, Header.Width),
         ParseType.B5G5R5A1 => ImageParsing.DecodeUncompressedB5G5R5A1(MipMap(0), Header.Height, Header.Width),
         ParseType.R8G8B8 => ImageParsing.DecodeUncompressedR8G8B8(MipMap(0), Header.Height, Header.Width),
         ParseType.B8G8R8 => ImageParsing.DecodeUncompressedB8G8R8(MipMap(0), Header.Height, Header.Width),
         ParseType.R8G8B8A8 => _data.Length == Header.Width * Header.Height * 4 ? _data : _data[..(Header.Width * Header.Height * 4)],