Я создал собственный выводчик для запроса U-SQL и использую для вывода двоичных [] данных изображения.
Но тип содержимого изображения неправильный. Я пытаюсь изменить логику в настраиваемом выходном устройстве, и это не работает для меня, и для него установлен тип содержимого "text / plain; charset = utf-8"
Итак, есть ли способ установить тип содержимого для пользовательского преобразователя или сценария U-SQL?
Следующий код C # ниже - это пользовательский выход для сохранения данных изображения.
using Microsoft.Analytics.Interfaces;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
namespace ImageAssemblies
{
[SqlUserDefinedExtractor(AtomicFileProcessing = true)]
public class ImageOutputter : IOutputter
{
public override void Output(IRow input, IUnstructuredWriter output)
{
var obj = input.Get<object>(0);
byte[] imageArray = (byte[])obj;
using (MemoryStream ms = new MemoryStream(imageArray))
{
var image = Image.FromStream(ms);
image.Save(output.BaseStream, ImageFormat.Gif);
}
}
}
}
Следующий скрипт U-SQL для выходных файлов изображений.
USE DATABASE [test];
REFERENCE ASSEMBLY [ImageAssemblies];
SET @@FeaturePreviews = "DataPartitionedOutput:on";
DECLARE @OutputPath string = @"wasb://thumbnail@xxxxxxxxxx.blob.core.windows.net/{FileName}.gif";
@image_out =
SELECT ImageAssemblies.ImageOps.scaleImageTo(ImgData, 480, 480) AS thumbnail_image,
FileName + "_480" AS FileName
FROM dbo.ThumbnailImages;
OUTPUT @image_out
TO @OutputPath
USING new ImageAssemblies.ImageOutputter();
Неверный тип содержимого, выходное изображение