15. Februar 2013 10:16
newFilename := 'test_image'
ConvSuccess := FALSE;
Images.CALCFIELDS(Picture);
IF Images.Picture.HASVALUE THEN BEGIN
Images.Picture.CREATEINSTREAM(NewInStream);
ReturnImgValue := DOWNLOADFROMSTREAM(NewInStream, '', '<TEMP>', '', MagicPath);
IF ReturnImgValue THEN BEGIN
CREATE(WSH, FALSE, TRUE);
TempFileOut := WSH.ExpandEnvironmentStrings('%TEMP%')+'\'+newFilename+'.jpg';
TempFileIn := MagicPath;
WSH.Run(convertBinary + ' -geometry 1024x768 -quality 90 "'+TempFileIn+'" "'+TempFileOut+'"');
ConvSuccess := TRUE;
CLEAR(WSH);
END;
END;
15. Februar 2013 10:44
15. Februar 2013 10:48
15. Februar 2013 11:07
15. Februar 2013 15:27
seitz hat geschrieben:Ich kann kein C# aber ist das nicht falsch rum?
-> Datei auslesen, in BMP konvertieren in BLOB speichern
und ich müsste
-> BLOB auslesen, zu JPG konvertieren und unter Pfad C:\Pfad\zur\Datei\ ablegen
seitz hat geschrieben:Haltet mich jetzt nicht für doof aber wie bekomme ich C# Code in NAV zum Laufen? Was muss ich da machen?
Ich versuchs mal, vielleicht funktionierts
15. Februar 2013 15:48
19. Februar 2013 11:45
Images.Picture.CREATEINSTREAM(newinstream);
CREATE(ConvertStreamToJpg, FALSE, TRUE);
ConvertStreamToJpg.ConvertStreamToJpeg(newinstream, 'C:\TEST\test.jpg', 200, 200);
public void ConvertStreamToJpeg(object ObjPictureStream, string StrTargetFile, int NewHeight, int NewWidth)
{
Size MySize = new Size(NewWidth, NewHeight);
Image MyImage = Image.FromStream(ObjPictureStream as Stream);
Bitmap MyJpeg = new Bitmap(MyImage, MySize);
MyJpeg.Save(StrTargetFile);
MyImage.Dispose();
MyJpeg.Dispose();
}
public void ConvertStreamToBmp(object ObjPictureStream, string StrTargetFile, int NewHeight, int NewWidth)
{
Stream StmPicStream = ObjPictureStream as Stream;
Image img = Image.FromStream(StmPicStream);
Size MySize = new Size(NewWidth, NewHeight);
Bitmap MyBitMap = new Bitmap(img, MySize);
MyBitMap.Save(StrTargetFile, ImageFormat.Jpeg);
img.Dispose();
MyBitMap.Dispose();
}
19. Februar 2013 12:59
19. Februar 2013 13:00
Images.CALCFIELDS(Picture);
IF Images.Picture.HASVALUE THEN BEGIN
Images.Picture.CREATEOUTSTREAM(NewOutStream);
ConvStreamToFile := ConvStreamToFile.ConvertStreamToJpg();
ConvStreamToFile.ConvertStreamToJpeg(NewOutStream, 'C:\test\test.jpg', 200, 200);
END;
public void ConvertStreamToJpeg(object ObjPictureStream, string StrTargetFile, int NewHeight, int NewWidth)
{
Size MySize = new Size(NewWidth, NewHeight);
Image MyImage = Image.FromStream(ObjPictureStream as Stream);
Bitmap MyJpeg = new Bitmap(MyImage, MySize);
MyJpeg.Save(StrTargetFile);
MyImage.Dispose();
MyJpeg.Dispose();
}
19. Februar 2013 13:14
19. Februar 2013 13:14
19. Februar 2013 14:16
vsnase hat geschrieben:Nur eine kurze Anmerkung. Dein Code berücksichtigt nicht das Seitverhältnis des originalen Bildes. Dein verkleinertes Bild kann dann verzerrt sein.
Volker
public void ConvertStreamToJpeg(object ObjPictureStream, string StrTargetFile)
{
Image MyImage = Image.FromStream(ObjPictureStream as Stream);
Bitmap MyJpeg = new Bitmap(MyImage);
MyJpeg.Save(StrTargetFile);
MyImage.Dispose();
MyJpeg.Dispose();
}
19. Februar 2013 14:22
public void ConvertStreamToJpeg(object objPictureStream, string strTargetFile, int height, int width, bool preserveAspectRatio = true)
{
Image myImage = Image.FromStream(objPictureStream as Stream);
if (preserveAspectRatio)
{
int origWidth = myImage.Width;
int origHeight = myImage.Height;
float percWidth = (float)width / (float)origWidth;
float percHeight = (float)height / (float)origHeight;
float percent = percHeight < percWidth ? percHeight : percWidth;
width = (int)(origWidth * percent);
height = (int)(origHeight * percent);
}
Size mySize = new Size(width, height);
Bitmap myJpeg = new Bitmap(myImage, mySize);
myJpeg.Save(strTargetFile);
myImage.Dispose();
myJpeg.Dispose();
}