Тема: Image resize
Показать сообщение отдельно
Старый 01.08.2017, 22:01   #3  
TDV is offline
TDV
Участник
 
128 / 30 (2) +++
Регистрация: 04.11.2005
Цитата:
Сообщение от maldini Посмотреть сообщение
У класса Image хоть он и наследник от BinData есть какие то глюки с загрузкой файла получением base64encode. Вот так работать будет
X++:
    binData = new BinData();
    binData.loadFile(@"d:\2.PNG");
    
    image = new Image();
    image.setData(binData.getData());
    image.resize(96,96,InterpolationMode::InterpolationModeHighQuality);
    image.saveImage(@"d:\2_1.png");
Спасибо, но это тоже не сработало, сохраняемый размер файла остался таким же.
X++:
AxImage = new Image();
     w=w*0.6;
     h=h*0.6;


      imgnew=System.Drawing.Image::FromFile(@"Y:\1\12345.png");
    h= imgnew.get_Height();
    w= imgnew.get_Width();
    h2=h*0.6;
    w2=w*0.6;
    bitmap = new System.Drawing.Bitmap(imgnew, w2,h2);

      sd =  System.Drawing.Graphics::FromImage(bitmap);
      bitmap.Save(@"Y:\1\12345.png");
Это сработало.

Еще вопрос, как можно задать(в X++) формат сжатия для JPG, с синтаксисом написания проблемы. В С# вроде все понятно, но на X++ не догоняю, как задать последний параметр encdp.
X++:
System.Drawing.Imaging.Encoder enc;
System.Drawing.Imaging.EncoderParameters[] encdpall;
System.Drawing.Imaging.EncoderParameters encdp;
System.Drawing.Imaging.EncoderParameter  encpv;
System.Drawing.Imaging.ImageCodecInfo imgci;
System.Drawing.Imaging.ImageCodecInfo[] imgciall;

..
imgciall= System.Drawing.Imaging.ImageCodecInfo::GetImageEncoders();
imgci=imgciall.GetValue(1);// JPG

enc= new System.Drawing.Imaging.Encoder(imgci.get_Clsid()); //?????
encpv= new System.Drawing.Imaging.EncoderParameter(enc,1);//?????
encpvall.SetValue(encpv,1);//?????
encdp.set_Param(encpvall);//?????

 bitmap.Save(@"Y:\1\12345.jpg",imgci,encdp);
как задать Quality для encdp ?