// private void SliderContrast_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
        // {
        //    if (EffectIndex is -1) { return; }

        //    int value = Convert.ToInt32(SliderContrast.Value);
        //    if (value is 0) { NoFilter(); return; }

        //    switch (EffectIndex)
        //    {
        //        case 0: /*add*/ break;
        //        case 1: Brightness(value); break;
        //        case 2: Contrast(value); break;
        //        case 3: Temperature(value); break;
        //        case 4: ColorBoost(value); break;
        //        case 5: /*Add*/ break;
        //        case 6: /*add*/ break;
        //    }
        // }

        // private void EditsList_ItemClick(object sender, ItemClickEventArgs e)
        // {
        //    var data = e.ClickedItem as GridViewEditItem;
        //    EffectIndex = data.Target;
        //    _NameEffect.Text = data.Text;
        //    EditRoot.Visibility = Visibility.Visible;
        // }

        // private void Cancel_Click(object sender, RoutedEventArgs e)
        // {
        //    EditRoot.Visibility = Visibility.Collapsed;
        // }

        // private void Done_Click(object sender, RoutedEventArgs e)
        // {
        //    EditRoot.Visibility = Visibility.Collapsed;
        // }

        async Task <Uri> SaveToImage()
        {
            using (var source = new StorageFileImageSource(imageStorageFile))
                using (var renderer = new JpegRenderer(LastEffect, JpegOutputColorMode.Yuv420))
                {
                    var info = await source.GetInfoAsync();

                    var R = AspectRatioHelper.Aspect(Convert.ToInt32(info.ImageSize.Width), Convert.ToInt32(info.ImageSize.Height));
                    if (!SupportedAspectRatio(R))
                    {
                        var max = Math.Max(info.ImageSize.Height, info.ImageSize.Width);
                        renderer.Size = new Size(max, max);
                    }
                    var saveAsTarget = await ApplicationData.Current.LocalFolder.CreateFileAsync("file.Jpg", CreationCollisionOption.GenerateUniqueName);

                    var render = await renderer.RenderAsync();

                    using (var fs = await saveAsTarget.OpenAsync(FileAccessMode.ReadWrite))
                    {
                        await fs.WriteAsync(render);

                        await fs.FlushAsync();

                        return(new Uri($"ms-appdata:///local/{saveAsTarget.Name}", UriKind.RelativeOrAbsolute));
                    }
                }
        }
Esempio n. 2
0
        public override void BeginRecording(RecordingSession session)
        {
            int screenWidth  = Screen.width;
            int screenHeight = Screen.height;

#if UNITY_EDITOR
            switch (scSettings.m_OutputSize)
            {
            case EImageDimension.Window:
            {
                GameViewSize.GetGameRenderSize(out screenWidth, out screenHeight);
                outputWidth  = screenWidth;
                outputHeight = screenHeight;

                if (scSettings.m_ForceEvenSize)
                {
                    outputWidth  = (outputWidth + 1) & ~1;
                    outputHeight = (outputHeight + 1) & ~1;
                }
                break;
            }

            default:
            {
                outputHeight = (int)scSettings.m_OutputSize;
                outputWidth  = (int)(outputHeight * AspectRatioHelper.GetRealAR(scSettings.m_AspectRatio));

                if (scSettings.m_ForceEvenSize)
                {
                    outputWidth  = (outputWidth + 1) & ~1;
                    outputHeight = (outputHeight + 1) & ~1;
                }

                break;
            }
            }

            int w, h;
            GameViewSize.GetGameRenderSize(out w, out h);
            if (w != outputWidth || h != outputHeight)
            {
                var size = GameViewSize.SetCustomSize(outputWidth, outputHeight) ?? GameViewSize.AddSize(outputWidth, outputHeight);
                if (GameViewSize.m_ModifiedResolutionCount == 0)
                {
                    GameViewSize.BackupCurrentSize();
                }
                else
                {
                    if (size != GameViewSize.currentSize)
                    {
                        Debug.LogError("Requestion a resultion change while a recorder's input has already requested one! Undefined behaviour.");
                    }
                }
                GameViewSize.m_ModifiedResolutionCount++;
                m_ModifiedResolution = true;
                GameViewSize.SelectSize(size);
            }
#endif
        }
Esempio n. 3
0
        public override void BeginRecording(RecordingSession session)
        {
            m_quad = CreateFullscreenQuad();
            switch (cbSettings.source)
            {
            case EImageSource.GameDisplay:
            case EImageSource.MainCamera:
            {
                int screenWidth  = Screen.width;
                int screenHeight = Screen.height;
#if UNITY_EDITOR
                switch (cbSettings.m_RenderSize)
                {
                case EImageDimension.Window:
                {
                    GameViewSize.GetGameRenderSize(out screenWidth, out screenHeight);
                    outputWidth  = screenWidth;
                    outputHeight = screenHeight;

                    if (cbSettings.m_PadSize)
                    {
                        outputWidth  = (outputWidth + 1) & ~1;
                        outputHeight = (outputHeight + 1) & ~1;
                    }

                    break;
                }

                default:
                {
                    outputHeight = (int)cbSettings.m_RenderSize;
                    outputWidth  = (int)(outputHeight * AspectRatioHelper.GetRealAR(cbSettings.m_RenderAspect));

                    if (cbSettings.m_PadSize)
                    {
                        outputWidth  = (outputWidth + 1) & ~1;
                        outputHeight = (outputHeight + 1) & ~1;
                    }

                    var size = GameViewSize.FindSize(outputWidth, outputHeight);
                    if (size == null)
                    {
                        size = GameViewSize.AddSize(outputWidth, outputHeight);
                    }

                    GameViewSize.SelectSize(size);
                    break;
                }
                }
#endif
                break;
            }

            case EImageSource.TaggedCamera:
            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Esempio n. 4
0
        public override void BeginRecording(RecordingSession session)
        {
            superShader      = Shader.Find("Hidden/Volund/BS4SuperShader");
            accumulateShader = Shader.Find("Hidden/BeautyShot/Accumulate");
            normalizeShader  = Shader.Find("Hidden/BeautyShot/Normalize");

            if (rtsSettings.m_FlipFinalOutput)
            {
                m_VFlipper = new TextureFlipper();
            }

            // Below here is considered 'void StartVertice()', but we run it for directly "various reasons".
            if (rtsSettings.m_OutputSize > rtsSettings.m_RenderSize)
            {
                throw new UnityException("Upscaling is not supported! Output dimension must be smaller or equal to render dimension.");
            }

            // Calculate aspect and render/output sizes
            // Clamp size to 16K, which is the min always supported size in d3d11
            // Force output to divisible by two as x264 doesn't approve of odd image dimensions.
            var aspect = AspectRatioHelper.GetRealAR(rtsSettings.m_AspectRatio);

            m_renderHeight = (int)rtsSettings.m_RenderSize;
            m_renderWidth  = Mathf.Min(16 * 1024, Mathf.RoundToInt(m_renderHeight * aspect));
            outputHeight   = (int)rtsSettings.m_OutputSize;
            outputWidth    = Mathf.Min(16 * 1024, Mathf.RoundToInt(outputHeight * aspect));
            if (rtsSettings.m_ForceEvenSize)
            {
                outputWidth  = (outputWidth + 1) & ~1;
                outputHeight = (outputHeight + 1) & ~1;
            }

            m_superMaterial           = new Material(superShader);
            m_superMaterial.hideFlags = HideFlags.DontSave;

            m_accumulateMaterial           = new Material(accumulateShader);
            m_accumulateMaterial.hideFlags = HideFlags.DontSave;

            m_normalizeMaterial           = new Material(normalizeShader);
            m_normalizeMaterial.hideFlags = HideFlags.DontSave;

            m_renderRT          = new RenderTexture(m_renderWidth, m_renderHeight, 24, RenderTextureFormat.DefaultHDR, RenderTextureReadWrite.Linear);
            m_renderRT.wrapMode = TextureWrapMode.Clamp;
            for (int i = 0; i < 2; ++i)
            {
                m_accumulateRTs[i]          = new RenderTexture(m_renderWidth, m_renderHeight, 0, RenderTextureFormat.DefaultHDR, RenderTextureReadWrite.Linear);
                m_accumulateRTs[i].wrapMode = TextureWrapMode.Clamp;
                m_accumulateRTs[i].Create();
            }
            var rt = new RenderTexture(outputWidth, outputHeight, 0, RenderTextureFormat.DefaultHDR, RenderTextureReadWrite.Linear);

            rt.Create();
            outputRT  = rt;
            m_samples = new Vector2[(int)rtsSettings.m_SuperSampling];
            GenerateSamplesMSAA(m_samples, rtsSettings.m_SuperSampling);

            m_hookedCameras = new List <HookedCamera>();
        }
Esempio n. 5
0
        async void ImportFile(StorageFile file)
        {
            try
            {
                var    editNeeded = false;
                double width = 0, height = 0;
                var    decoder = await BitmapDecoder.CreateAsync(await file.OpenReadAsync());

                width  = decoder.PixelWidth;
                height = decoder.PixelHeight;
                var wRatio = AspectRatioHelper.GetAspectRatioForMedia(width, height);
                var hRatio = AspectRatioHelper.GetAspectRatioForMedia(height, width);
                //if (wRatio > 1.91 && wRatio < 0.8)
                //    editNeeded = true;
                //else
                //{
                //    if (hRatio > 1.91 && hRatio < 0.8)
                //        editNeeded = true;
                //}
                //if (height > width)
                editNeeded = true;

                if (!editNeeded)
                {
                    CropGrid.Visibility    = Visibility.Visible;
                    ImageView.Visibility   = Visibility.Collapsed;
                    UploadButton.IsEnabled = false;

                    AspectRatioSlider.Value  = wRatio;
                    ImageCropper.AspectRatio = wRatio;
                    ImageCropper.CropShape   = CropShape.Rectangular;
                    await ImageCropper.LoadImageFromFile(file);
                }
                else
                {
                    CropGrid.Visibility    = Visibility.Visible;
                    ImageView.Visibility   = Visibility.Collapsed;
                    UploadButton.IsEnabled = false;
                    //Helper.ShowNotify("Your photo is not in a acceptable aspect ratio." +
                    //    "\r\nYou need to crop it and then you can upload it.", 4500);


                    AspectRatioSlider.Value  = DefaultAspectRatio;
                    ImageCropper.AspectRatio = DefaultAspectRatio;
                    ImageCropper.CropShape   = CropShape.Rectangular;
                    await ImageCropper.LoadImageFromFile(file);
                }
            }
            catch { }
        }
Esempio n. 6
0
        private double GetImageDisplayHeight(ItemListViewModel viewModel)
        {
            var imageDisplayWidth             = viewModel.ImageDisplayWidth;
            var medianPrimaryImageAspectRatio = viewModel.MedianPrimaryImageAspectRatio ?? 0;

            var imageType = GetPreferredImageTypes(viewModel).First();

            if (imageType == ImageType.Backdrop || imageType == ImageType.Screenshot || imageType == ImageType.Thumb)
            {
                double height = imageDisplayWidth;
                return(height / AspectRatioHelper.GetAspectRatio(ImageType.Backdrop, medianPrimaryImageAspectRatio));
            }

            if (!medianPrimaryImageAspectRatio.Equals(0) && imageType == ImageType.Primary)
            {
                double height = imageDisplayWidth;
                height /= medianPrimaryImageAspectRatio;

                return(height);
            }

            return(viewModel.DefaultImageDisplayHeight);
        }
Esempio n. 7
0
        public override void BeginRecording(RecordingSession session)
        {
            if (cbSettings.m_FlipFinalOutput)
            {
                m_VFlipper = new TextureFlipper();
            }

            m_quad = CreateFullscreenQuad();
            switch (cbSettings.source)
            {
            case EImageSource.ActiveCameras:
            case EImageSource.MainCamera:
            case EImageSource.TaggedCamera:
            {
                int screenWidth  = Screen.width;
                int screenHeight = Screen.height;
#if UNITY_EDITOR
                switch (cbSettings.m_OutputSize)
                {
                case EImageDimension.Window:
                {
                    GameViewSize.GetGameRenderSize(out screenWidth, out screenHeight);
                    outputWidth  = screenWidth;
                    outputHeight = screenHeight;

                    if (cbSettings.m_ForceEvenSize)
                    {
                        outputWidth  = (outputWidth + 1) & ~1;
                        outputHeight = (outputHeight + 1) & ~1;
                    }

                    break;
                }

                default:
                {
                    outputHeight = (int)cbSettings.m_OutputSize;
                    outputWidth  = (int)(outputHeight * AspectRatioHelper.GetRealAR(cbSettings.m_AspectRatio));

                    if (cbSettings.m_ForceEvenSize)
                    {
                        outputWidth  = (outputWidth + 1) & ~1;
                        outputHeight = (outputHeight + 1) & ~1;
                    }

                    var size = GameViewSize.SetCustomSize(outputWidth, outputHeight);
                    if (size == null)
                    {
                        size = GameViewSize.AddSize(outputWidth, outputHeight);
                    }

                    if (GameViewSize.m_ModifiedResolutionCount == 0)
                    {
                        GameViewSize.BackupCurrentSize();
                    }
                    else
                    {
                        if (size != GameViewSize.currentSize)
                        {
                            Debug.LogError("Requestion a resultion change while a recorder's input has already requested one! Undefined behaviour.");
                        }
                    }
                    GameViewSize.m_ModifiedResolutionCount++;
                    m_ModifiedResolution = true;
                    GameViewSize.SelectSize(size);
                    break;
                }
                }
#endif
                break;
            }

            default:
                throw new ArgumentOutOfRangeException();
            }

            if (cbSettings.m_CaptureUI)
            {
                var uiGO = new GameObject();
                uiGO.name             = "UICamera";
                uiGO.transform.parent = session.m_RecorderGO.transform;

                m_UICamera               = uiGO.AddComponent <Camera>();
                m_UICamera.cullingMask   = 1 << 5;
                m_UICamera.clearFlags    = CameraClearFlags.Depth;
                m_UICamera.renderingPath = RenderingPath.DeferredShading;
                m_UICamera.targetTexture = outputRT;
                m_UICamera.enabled       = false;
            }
        }
Esempio n. 8
0
        public async Task SetFileAsync(StorageFile file)
        {
            try
            {
                Editing = true;
                CanCrop = false;
                LoadingUc.Start();
                if (file.IsVideo())
                {
                    VideoButton.Visibility = Visibility.Visible;
                    IsVideo       = true;
                    FileToUpload  = file;
                    ThumbnailFile = await file.GetSnapshotFromD3D(TimeSpan.Zero, true);

                    ThumbnailFile = await new PhotoHelper().SaveToImage(ThumbnailFile, false);

                    double width = 0, height = 0;
                    var    decoder = await BitmapDecoder.CreateAsync(await ThumbnailFile.OpenReadAsync());

                    width  = decoder.PixelWidth;
                    height = decoder.PixelHeight;
                    var wRatio = AspectRatioHelper.GetAspectRatioForMedia(width, height);
                    var hRatio = AspectRatioHelper.GetAspectRatioForMedia(height, width);
                    MainCanvas.Visibility = Visibility.Collapsed;

                    AspectRatioSlider.Value  = wRatio;
                    ImageCropper.AspectRatio = wRatio;
                    ImageCropper.CropShape   = CropShape.Rectangular;
                    await ImageCropper.LoadImageFromFile(ThumbnailFile);

                    CropGrid.Visibility = Visibility.Visible;

                    await Task.Delay(1500);

                    ImageCropper.AspectRatio = DefaultAspectRatio;
                    AspectRatioSlider.Value  = DefaultAspectRatio;
                    CanCrop = true;
                    LoadingUc.Stop();
                }
                else
                {
                    VideoButton.Visibility = Visibility.Collapsed;
                    IsVideo       = false;
                    ThumbnailFile = null;
                    BitmapDecoder = null;
                    var    editNeeded = false;
                    double width = 0, height = 0;
                    var    decoder = await BitmapDecoder.CreateAsync(await file.OpenReadAsync());

                    width  = decoder.PixelWidth;
                    height = decoder.PixelHeight;
                    var wRatio = AspectRatioHelper.GetAspectRatioForMedia(width, height);
                    var hRatio = AspectRatioHelper.GetAspectRatioForMedia(height, width);
                    if (wRatio > 1.91 && wRatio < 0.8)
                    {
                        editNeeded = true;
                    }
                    else
                    {
                        if (hRatio > 1.91 && hRatio < 0.8)
                        {
                            editNeeded = true;
                        }
                    }
                    if (height > width)
                    {
                        editNeeded = true;
                    }

                    //in paeini comment bod
                    FileToUpload = await new PhotoHelper().SaveToImage(file, false);

                    if (!editNeeded)
                    {
                        CropGrid.Visibility = Visibility.Visible;

                        MainCanvas.Visibility = Visibility.Collapsed;

                        AspectRatioSlider.Value  = wRatio;
                        ImageCropper.AspectRatio = wRatio;
                        ImageCropper.CropShape   = CropShape.Rectangular;
                        await ImageCropper.LoadImageFromFile(file);
                    }
                    else
                    {
                        CropGrid.Visibility      = Visibility.Visible;
                        MainCanvas.Visibility    = Visibility.Collapsed;
                        AspectRatioSlider.Value  = DefaultAspectRatio;
                        ImageCropper.AspectRatio = DefaultAspectRatio;
                        ImageCropper.CropShape   = CropShape.Rectangular;
                        await ImageCropper.LoadImageFromFile(file);
                    }
                    //await Task.Delay(1500);
                    CanCrop = true;
                    LoadingUc.Stop();
                }
            }
            catch { }
        }
        async void Next_Click(object sender, RoutedEventArgs e)
        {
            // Width of Photo should be 1080 at last
            // photo that has a width between 320 and 1080 pixels,
            // photo's aspect ratio is between 1.91:1 and 4:5 (a height between 566 and 1350 pixels with a width of 1080 pixels)
            using (var source = new StorageFileImageSource(imageStorageFile))
            {
                var size = (await source.GetInfoAsync()).ImageSize;
                var R    = AspectRatioHelper.Aspect(Convert.ToInt32(size.Width), Convert.ToInt32(size.Height));
                Frame.Navigate(typeof(FinalizeAddView), (FiltersList.SelectedItem as FilterListItem).bitmapSource);
                //var res = await AppCore.InstaApi.UploadPhotoAsync(
                //    new InstaSharper.Classes.Models.InstaImage((FiltersList.SelectedItem as FilterListItem).bitmapSource.LocalPath, (int)size.Width, (int)size.Height), "#تست #موقت");
            }

            StorageFile F2S = null;

            if (FiltersList.SelectedItem == null)
            {
                F2S = imageStorageFile;
            }

            else
            {
                F2S = await StorageFile.GetFileFromApplicationUriAsync((FiltersList.SelectedItem as FilterListItem).bitmapSource);
            }

            var fsp = new FileSavePicker();

            fsp.FileTypeChoices.Add(".jpg", new List <string> {
                ".jpg"
            });
            fsp.SuggestedFileName      = "WinGoTag";
            fsp.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
            var fs = await fsp.PickSaveFileAsync();

            if (fs == null)
            {
                return;
            }
            await F2S.CopyAndReplaceAsync(fs);

            //    using (var source = new StorageFileImageSource(imageStorageFile))
            //    using (var contrastEffect = new BlurEffect(source) { KernelSize = 40 })
            //    using (var renderer = new JpegRenderer(contrastEffect, JpegOutputColorMode.Yuv420))
            //    {
            //        var info = await source.GetInfoAsync();
            //        var saveAsTarget = await ApplicationData.Current.LocalFolder.CreateFileAsync("TempImage1.Jpg", CreationCollisionOption.OpenIfExists);
            //        var render = await renderer.RenderAsync();
            //        using (var fs = await saveAsTarget.OpenAsync(FileAccessMode.ReadWrite))
            //        {
            //            await fs.WriteAsync(render);
            //            await fs.FlushAsync();
            //        }
            //    }
            //    var res = await AppCore.InstaApi.UploadPhotoAsync(new InstaSharper.Classes.Models.InstaImage()
            //    {
            //        URI = new Uri("ms-appdata:///TempImage1.Jpg", UriKind.Absolute).LocalPath,
            //        Width = 391,
            //        Height = 428
            //    }, "از بیرون تحریم؛ از داخل فیلتر :|");
        }
Esempio n. 10
0
        async void ImportFile(StorageFile file)
        {
            try
            {
                if (Path.GetExtension(file.Path).ToLower() == ".mp4" || Path.GetExtension(file.Path).ToLower() == ".mkv")
                {
                    IsVideo       = true;
                    FileToUpload  = file;
                    ThumbnailFile = await file.GetSnapshotFromD3D(TimeSpan.Zero, true);

                    ThumbnailFile = await new PhotoHelper().SaveToImage(ThumbnailFile, false);

                    double width = 0, height = 0;
                    var    decoder = await BitmapDecoder.CreateAsync(await ThumbnailFile.OpenReadAsync());

                    width  = decoder.PixelWidth;
                    height = decoder.PixelHeight;
                    var wRatio = AspectRatioHelper.GetAspectRatioForMedia(width, height);
                    var hRatio = AspectRatioHelper.GetAspectRatioForMedia(height, width);



                    MainCanvas.Visibility  = /*ImageView.Visibility =*/ Visibility.Collapsed;
                    UploadButton.IsEnabled = false;

                    AspectRatioSlider.Value  = wRatio;
                    ImageCropper.AspectRatio = wRatio;
                    ImageCropper.CropShape   = CropShape.Rectangular;
                    await ImageCropper.LoadImageFromFile(ThumbnailFile);

                    AspectRatioSlider.Value  = DefaultAspectRatio;
                    ImageCropper.AspectRatio = DefaultAspectRatio;
                    //await Task.Delay(2500);
                    //using (var fileStream = await ThumbnailFile.OpenAsync(FileAccessMode.ReadWrite, StorageOpenOptions.None))
                    //    await ImageCropper.SaveAsync(fileStream, BitmapFileFormat.Jpeg);
                    //ThumbnailFile = await new PhotoHelper().SaveToImage(ThumbnailFile, false);
                    //decoder = await BitmapDecoder.CreateAsync(await ThumbnailFile.OpenReadAsync());
                    //VideoBitmapDecoder = decoder;
                    //CurrentCroppedRectForVideo = ImageCropper.CurrentCroppedRect;
                    //ShowImagePreview(ThumbnailFile);
                    //CropGrid.Visibility = Visibility.Collapsed;
                    //MainCanvas.Visibility = /*ImageView.Visibility =*/  Visibility.Visible;
                    //UploadButton.IsEnabled = true;

                    var editNeeded = false;

                    if (wRatio > 1.91 && wRatio < 0.8)
                    {
                        editNeeded = true;
                    }
                    else
                    {
                        if (hRatio > 1.91 && hRatio < 0.8)
                        {
                            editNeeded = true;
                        }
                    }
                    if (height > width)
                    {
                        editNeeded = true;
                    }

                    if (!editNeeded)
                    {
                        FileToUpload = await new PhotoHelper().SaveToImage(file, false);

                        CropGrid.Visibility = Visibility.Visible;

                        CropGrid.Opacity       = 1;
                        MainCanvas.Visibility  = /*ImageView.Visibility =*/ Visibility.Collapsed;
                        UploadButton.IsEnabled = false;

                        AspectRatioSlider.Value  = wRatio;
                        ImageCropper.AspectRatio = wRatio;
                        ImageCropper.CropShape   = CropShape.Rectangular;
                        await ImageCropper.LoadImageFromFile(file);
                    }
                    else
                    {
                        CropGrid.Opacity       = 1;
                        CropGrid.Visibility    = Visibility.Visible;
                        MainCanvas.Visibility  = /*ImageView.Visibility =*/ Visibility.Collapsed;
                        UploadButton.IsEnabled = false;

                        AspectRatioSlider.Value  = DefaultAspectRatio;
                        ImageCropper.AspectRatio = DefaultAspectRatio;
                        ImageCropper.CropShape   = CropShape.Rectangular;
                        await ImageCropper.LoadImageFromFile(file);
                    }
                }
                else
                {
                    IsVideo            = false;
                    ThumbnailFile      = null;
                    VideoBitmapDecoder = null;
                    var    editNeeded = false;
                    double width = 0, height = 0;
                    var    decoder = await BitmapDecoder.CreateAsync(await file.OpenReadAsync());

                    width  = decoder.PixelWidth;
                    height = decoder.PixelHeight;
                    var wRatio = AspectRatioHelper.GetAspectRatioForMedia(width, height);
                    var hRatio = AspectRatioHelper.GetAspectRatioForMedia(height, width);
                    if (wRatio > 1.91 && wRatio < 0.8)
                    {
                        editNeeded = true;
                    }
                    else
                    {
                        if (hRatio > 1.91 && hRatio < 0.8)
                        {
                            editNeeded = true;
                        }
                    }
                    if (height > width)
                    {
                        editNeeded = true;
                    }

                    if (!editNeeded)
                    {
                        //CropGrid.Visibility = Visibility.Collapsed;

                        //ImageView.Visibility = Visibility.Visible;
                        //UploadButton.IsEnabled = true;
                        //ShowImagePreview(file);

                        //in paeini comment bod
                        FileToUpload = await new PhotoHelper().SaveToImage(file, false);



                        CropGrid.Visibility = Visibility.Visible;

                        CropGrid.Opacity       = 1;
                        MainCanvas.Visibility  = /*ImageView.Visibility =*/ Visibility.Collapsed;
                        UploadButton.IsEnabled = false;

                        AspectRatioSlider.Value  = wRatio;
                        ImageCropper.AspectRatio = wRatio;
                        ImageCropper.CropShape   = CropShape.Rectangular;
                        await ImageCropper.LoadImageFromFile(file);
                    }
                    else
                    {
                        CropGrid.Opacity       = 1;
                        CropGrid.Visibility    = Visibility.Visible;
                        MainCanvas.Visibility  = /*ImageView.Visibility =*/ Visibility.Collapsed;
                        UploadButton.IsEnabled = false;
                        //Helper.ShowNotify("Your photo is not in a acceptable aspect ratio." +
                        //    "\r\nYou need to crop it and then you can upload it.", 4500);


                        AspectRatioSlider.Value  = DefaultAspectRatio;
                        ImageCropper.AspectRatio = DefaultAspectRatio;
                        ImageCropper.CropShape   = CropShape.Rectangular;
                        await ImageCropper.LoadImageFromFile(file);
                    }
                    //using (var source = new StorageFileImageSource(file))
                    //using (var renderer = new JpegRenderer(source, JpegOutputColorMode.Yuv420, OutputOption.PreserveAspectRatio))
                    //{
                    //    var info = await source.GetInfoAsync();
                    //    width = info.ImageSize.Width;
                    //    height = info.ImageSize.Height;
                    //}
                }
            }
            catch { }
        }
Esempio n. 11
0
        public static async Task <WebMediaInfo> ProcessAsync(IOwinContext context, string itemId, WebMediaType type)
        {
            if (itemId == null)
            {
                throw new BadRequestException("GetMediaInfo: itemId is null");
            }

            Guid                     mediaItemId;
            MediaItem                item;
            long                     duration  = 0;
            string                   container = string.Empty;
            MetadataContainer        info;
            List <WebVideoStream>    webVideoStreams    = new List <WebVideoStream>();
            List <WebAudioStream>    webAudioStreams    = new List <WebAudioStream>();
            List <WebSubtitleStream> webSubtitleStreams = new List <WebSubtitleStream>();

            if (type == WebMediaType.TV || type == WebMediaType.Radio)
            {
                int channelIdInt;
                if (int.TryParse(itemId, out channelIdInt))
                {
                    item = new LiveTvMediaItem(Guid.Empty);
                    info = MediaAnalyzer.ParseChannelStreamAsync(channelIdInt, (LiveTvMediaItem)item).Result;
                    if (info == null)
                    {
                        throw new BadRequestException(String.Format("GetMediaInfo: Channel {0} stream not available", itemId));
                    }
                }
                else
                {
                    throw new BadRequestException(String.Format("GetMediaInfo: Channel {0} not found", itemId));
                }
            }
            else if (Guid.TryParse(itemId, out mediaItemId) == true)
            {
                ISet <Guid> necessaryMIATypes = new HashSet <Guid>();
                necessaryMIATypes.Add(MediaAspect.ASPECT_ID);
                necessaryMIATypes.Add(ProviderResourceAspect.ASPECT_ID);
                necessaryMIATypes.Add(ImporterAspect.ASPECT_ID);

                ISet <Guid> optionalMIATypes = new HashSet <Guid>();
                optionalMIATypes.Add(VideoAspect.ASPECT_ID);
                optionalMIATypes.Add(VideoStreamAspect.ASPECT_ID);
                optionalMIATypes.Add(VideoAudioStreamAspect.ASPECT_ID);
                optionalMIATypes.Add(AudioAspect.ASPECT_ID);
                optionalMIATypes.Add(ImageAspect.ASPECT_ID);

                item = MediaLibraryAccess.GetMediaItemById(context, itemId, necessaryMIATypes, optionalMIATypes);

                if (item == null)
                {
                    throw new BadRequestException(String.Format("GetMediaInfo: No MediaItem found with id: {0}", itemId));
                }
            }
            else
            {
                throw new BadRequestException(String.Format("GetMediaInfo: Media not found with id: {0}", itemId));
            }

            // decide which type of media item we have
            info = await MediaAnalyzer.ParseMediaItemAsync(item);

            if (item.Aspects.ContainsKey(VideoAspect.ASPECT_ID))
            {
                var videoAspect       = item.GetAspect(VideoAspect.Metadata);
                var videoStreamAspect = item.GetAspect(VideoStreamAspect.Metadata);
                duration = Convert.ToInt64(videoStreamAspect.GetAttributeValue <long?>(VideoStreamAspect.ATTR_DURATION) ?? 0);
                bool interlaced = (videoStreamAspect.GetAttributeValue <string>(VideoStreamAspect.ATTR_VIDEO_TYPE) ?? "").ToLowerInvariant().Contains("interlaced");

                foreach (var data in info.Metadata)
                {
                    int edition       = data.Key;
                    int editionOffset = 0;
                    if (edition >= 0)
                    {
                        editionOffset = (edition + 1) * ProfileMediaItem.EDITION_OFFSET;
                    }

                    if (info.IsVideo(edition))
                    {
                        // Video
                        WebVideoStream webVideoStream = new WebVideoStream();
                        webVideoStream.Codec = Convert.ToString(info.Video[edition].Codec);
                        webVideoStream.DisplayAspectRatio       = Convert.ToDecimal(info.Video[edition].AspectRatio ?? 0);
                        webVideoStream.DisplayAspectRatioString = AspectRatioHelper.AspectRatioToString(Convert.ToDecimal(info.Video[edition].AspectRatio ?? 0));
                        webVideoStream.Height = Convert.ToInt32(info.Video[edition].Height ?? 0);
                        webVideoStream.Width  = Convert.ToInt32(info.Video[edition].Width ?? 0);
                        webVideoStreams.Add(webVideoStream);
                        webVideoStream.ID         = info.Video[edition].StreamIndex + editionOffset;
                        webVideoStream.Index      = 0;
                        webVideoStream.Interlaced = interlaced;

                        container = info.Metadata[edition].VideoContainerType.ToString();

                        // Audio
                        for (int i = 0; i < info.Audio[edition].Count; i++)
                        {
                            WebAudioStream webAudioStream = new WebAudioStream();
                            if (info.Audio[edition][i].Channels != null)
                            {
                                webAudioStream.Channels = info.Audio[edition][i].Channels.Value;
                            }

                            webAudioStream.Codec = info.Audio[edition][i].Codec.ToString();
                            webAudioStream.ID    = info.Audio[edition][i].StreamIndex + editionOffset;
                            webAudioStream.Index = i;
                            if (info.Audio[edition][i].Language != null)
                            {
                                string language = info.Audio[edition][i].Language == string.Empty ? UNDEFINED : info.Audio[edition][i].Language;
                                webAudioStream.Language = language;
                                if (language != UNDEFINED)
                                {
                                    webAudioStream.LanguageFull = new CultureInfo(language).EnglishName;
                                    if (item.HasEditions && item.Editions.Any(e => e.Value.SetNo == edition))
                                    {
                                        webAudioStream.Title = item.Editions.First(e => e.Key == edition).Value.Name;
                                    }
                                    else if (item.GetPlayData(out var mime, out var mediaName))
                                    {
                                        webAudioStream.Title = mediaName;
                                    }
                                    else
                                    {
                                        webAudioStream.Title = "?";
                                    }
                                    if (string.IsNullOrEmpty(webAudioStream.Codec) == false)
                                    {
                                        webAudioStream.Title += webAudioStream.Title?.Length > 0 ? $" ({webAudioStream.Codec.ToUpperInvariant()})" : webAudioStream.Codec.ToUpperInvariant();
                                    }
                                }
                            }
                            webAudioStreams.Add(webAudioStream);
                        }

                        // Subtitles
                        if (info.Subtitles[edition].Any())
                        {
                            int firstMediaIdx = info.Subtitles[edition].Keys.First();
                            for (int i = 0; i < info.Subtitles[edition][firstMediaIdx].Count; i++)
                            {
                                WebSubtitleStream webSubtitleStream = new WebSubtitleStream();
                                webSubtitleStream.Filename = info.Subtitles[edition][firstMediaIdx][i].IsEmbedded ? "Embedded" : info.Subtitles[edition][firstMediaIdx][i].SourcePath;
                                webSubtitleStream.ID       = info.Subtitles[edition][firstMediaIdx][i].StreamIndex + editionOffset;
                                webSubtitleStream.Index    = i;
                                if (info.Subtitles[edition][firstMediaIdx][i].Language != null)
                                {
                                    string language = info.Subtitles[edition][firstMediaIdx][i].Language == string.Empty ? UNDEFINED : info.Subtitles[edition][firstMediaIdx][i].Language;
                                    webSubtitleStream.Language     = language;
                                    webSubtitleStream.LanguageFull = language;
                                    if (language != UNDEFINED)
                                    {
                                        webSubtitleStream.LanguageFull = new CultureInfo(language).EnglishName;
                                    }
                                }
                                webSubtitleStreams.Add(webSubtitleStream);
                            }
                        }
                    }
                }
            }
            else if (item.Aspects.ContainsKey(AudioAspect.ASPECT_ID))
            {
                int edition = info.Metadata.Min(d => d.Key);
                if (info.IsAudio(edition))
                {
                    var audioAspect = item.GetAspect(AudioAspect.Metadata);
                    duration  = (long)audioAspect[AudioAspect.ATTR_DURATION];
                    container = info.Metadata[edition].AudioContainerType.ToString();
                }
            }
            else if (item.Aspects.ContainsKey(ImageAspect.ASPECT_ID))
            {
                int edition = info.Metadata.Min(d => d.Key);
                if (info.IsImage(edition))
                {
                    container = info.Metadata[edition].ImageContainerType.ToString();
                }
            }

            WebMediaInfo webMediaInfo = new WebMediaInfo
            {
                Duration        = duration * 1000,
                Container       = container,
                VideoStreams    = webVideoStreams,
                AudioStreams    = webAudioStreams,
                SubtitleStreams = webSubtitleStreams
            };

            return(webMediaInfo);
        }
Esempio n. 12
0
        public override void BeginRecording(RecordingSession session)
        {
            m_quad = CreateFullscreenQuad();
            switch (cbSettings.source)
            {
            case EImageSource.GameDisplay:
            case EImageSource.MainCamera:
            {
                int screenWidth  = Screen.width;
                int screenHeight = Screen.height;
#if UNITY_EDITOR
                switch (cbSettings.m_RenderSize)
                {
                case EImageDimension.Window:
                {
                    GameViewSize.GetGameRenderSize(out screenWidth, out screenHeight);
                    outputWidth  = screenWidth;
                    outputHeight = screenHeight;

                    if (cbSettings.m_ForceEvenSize)
                    {
                        outputWidth  = (outputWidth + 1) & ~1;
                        outputHeight = (outputHeight + 1) & ~1;
                    }

                    break;
                }

                default:
                {
                    outputHeight = (int)cbSettings.m_RenderSize;
                    outputWidth  = (int)(outputHeight * AspectRatioHelper.GetRealAR(cbSettings.m_RenderAspect));

                    if (cbSettings.m_ForceEvenSize)
                    {
                        outputWidth  = (outputWidth + 1) & ~1;
                        outputHeight = (outputHeight + 1) & ~1;
                    }

                    var size = GameViewSize.SetCustomSize(outputWidth, outputHeight);
                    if (size == null)
                    {
                        size = GameViewSize.AddSize(outputWidth, outputHeight);
                    }

                    if (m_ModifiedResolutionCount == 0)
                    {
                        GameViewSize.BackupCurrentSize();
                    }
                    else
                    {
                        if (size != GameViewSize.currentSize)
                        {
                            Debug.LogError("Requestion a resultion change while a recorder's input has already requested one! Undefined behaviour.");
                        }
                    }
                    m_ModifiedResolutionCount++;
                    m_ModifiedResulution = true;
                    GameViewSize.SelectSize(size);
                    break;
                }
                }
#endif
                break;
            }

            case EImageSource.TaggedCamera:
            default:
                throw new ArgumentOutOfRangeException();
            }
        }