public ImageDataWrapper GetThumbnailByID(string imageID, int ThumbnailSize = 256) { if (imageID is null) { throw new ArgumentNullException(nameof(imageID)); } try { ImageDataWrapper imageDataWrapper; if (!memoryCache.TryGetValue(imageID, out imageDataWrapper)) { GalleryImage galleryImage = GetByID(imageID); using (Stream imageData = new MemoryStream(getImageDataByID(galleryImage))) { Image image = Image.FromStream(imageData); Image thumb = image.GetThumbnailImage(ThumbnailSize, ThumbnailSize, () => false, IntPtr.Zero); using (MemoryStream m = new MemoryStream()) { thumb.Save(m, image.RawFormat); byte[] imageBytes = m.ToArray(); imageDataWrapper = new ImageDataWrapper(); // Convert byte[] to Base64 String imageDataWrapper.ImageData = Convert.ToBase64String(imageBytes); } } AddItemToCache(imageID, imageDataWrapper); } return(imageDataWrapper); } catch (IOException ex) { throw ex; } }
public async Task <ExecutionResult> RunAsync(string input, IChannel channel) { var(name, args) = ParseInput(input); var symbol = SymbolResolver.Resolve(name) as IQSharpSymbol; if (symbol == null) { throw new InvalidOperationException($"Invalid operation name: {name}"); } var snippetsWithNoOverlap = this.Snippets.Items.Where(s => s.Elements.Select(IQSharp.Extensions.ToFullName).Contains(Snippets.SNIPPETS_NAMESPACE + "." + symbol.Name)); var files = new List <Uri>(); files.Add(snippetsWithNoOverlap.FirstOrDefault().Uri); var l = snippetsWithNoOverlap.FirstOrDefault().Elements; Console.WriteLine(l.Count()); foreach (var s in l) { Console.WriteLine(s.ToFullName()); //AssemblyInfo = Compiler.BuildFiles(files, GlobalReferences.CompilerMetadata, logger, CacheDll); } var qsNamespace = new QsCompiler.SyntaxTree.QsNamespace(NonNullable <string> .New(Snippets.SNIPPETS_NAMESPACE), ImmutableArray.Create(l), null); var logger = new QSharpLogger(Logger); var newAssembly = CompilerService.BuildAssembly(files.ToArray(), new[] { qsNamespace }, GlobalReferences.CompilerMetadata.RoslynMetadatas, logger, Path.Combine(Path.GetTempPath(), "__snippets__.dll")); Assembly.LoadFrom(newAssembly.Location); symbol = SymbolResolver.Resolve(name) as IQSharpSymbol; if (symbol == null) { throw new InvalidOperationException($"Invalid operation name: {name}"); } var aSCIICircuitizer = new ASCIICircuitizer(); var qsim = new CircuitizerSimulator(aSCIICircuitizer); qsim.DisableLogToConsole(); qsim.OnLog += channel.Stdout; var value = await symbol.Operation.RunAsync(qsim, args); var result = qsim.Render(); // TODO : currently we are ignoring the Render result from qsim and rendering a local file instead. var imageHtml = new ImageDataWrapper { imageFileName = @"C:\Users\angarg\Pictures\bad_status.PNG" }; //return imageHtml.ToExecutionResult(); return(result.ToExecutionResult()); }
public ImageDataWrapper GetDataByID(string imageID) { if (imageID is null) { throw new ArgumentNullException(nameof(imageID)); } logger.LogInformation($"Getting image data for ID {imageID}"); GalleryImage image = GetByID(imageID); ImageDataWrapper imageDataWrapper = new ImageDataWrapper(); imageDataWrapper.ImageData = Convert.ToBase64String(getImageDataByID(image)); logger.LogInformation($"Returning image data for ID {imageID}"); return(imageDataWrapper); }