Sample Application Package(Application Class) for - Image Resize, Convert to JPG and Send Image to File

 

class ImageUtilities
method ImageUtilities();
method ResizeImageFile(&InFilename As string, &InFileDirectory As string, &InWidth As integer, &InHeight As integer) Returns string;
method ConvertToJPG(&InFilename As string) Returns string;
method ConvertToJPG_w_Trans(&InFilename As string) Returns string;
method SendImageToFile(&Str_ImageRecord As string, &InKey As string) Returns string;
method SendImageToFile_W_Name(&Str_ImageRecord As string, &InKey As string, &InNewFileName As string) Returns string;
method GenImageDimensions(&SourceFile As string);
property integer Image_Height get;
property integer Image_Width get;
private
instance integer &Int_Height;
instance integer &Int_Width;
end-class;
method ImageUtilities
&Int_Height = 0;
&Int_Width = 0;
end-method;
/* resizes a jpg file to a different size jpg file */
method ResizeImageFile
/+ &InFilename as String, +/
/+ &InFileDirectory as String, +/
/+ &InWidth as Integer, +/
/+ &InHeight as Integer +/
/+ Returns String +/
Local string &TargetFileName, &TargetFileURL;
Local string &SourceFile = &InFileDirectory | &InFilename;
If Upper(Right(&SourceFile, 3)) = "JPG" Then
&TargetFileName = Left(&InFilename, Len(&InFilename) - 4) | "_scale.jpg";
Else
&TargetFileName = &InFilename | "_scale.jpg";
End-If;
If Right(&InFileDirectory, 1) = "/" Then
&TargetFileURL = &InFileDirectory | &TargetFileName;
Else
&TargetFileURL = &InFileDirectory | "/" | &TargetFileName;
End-If;
rem MessageBox(0, "", 0, 0, "Source: %1 %2 Target: %3", &SourceFile, Char(10), &TargetFileURL);
try
/* read input image */
Local JavaObject &Jo_InputFile = CreateJavaObject("java.io.File", &SourceFile);
Local JavaObject &JO_InputImage = CreateJavaObject("java.awt.image.BufferedImage", 1, 1, 1);
Local JavaObject &JO_ImageIO = GetJavaClass("javax.imageio.ImageIO");
&JO_InputImage = &JO_ImageIO.read(&Jo_InputFile);
/* create output image */
Local JavaObject &JO_OutputImage = CreateJavaObject("java.awt.image.BufferedImage", &InWidth, &InHeight, &JO_InputImage.getType());
/* scale the image */
Local JavaObject &JO_g2d = &JO_OutputImage.createGraphics();
&JO_g2d.drawImage(&JO_InputImage, 0, 0, &InWidth, &InHeight, Null);
&JO_g2d.dispose();
/* extracts extension of output file */
Local string &Formatname = "jpg";
Local JavaObject &JO_OutputFile = CreateJavaObject("java.io.File", &TargetFileURL);
&JO_ImageIO.write(&JO_OutputImage, &Formatname, &JO_OutputFile);
catch Exception &e
Error &e.ToString();
end-try;
Return &TargetFileName;
end-method;
/* converts an existing image format to jpg */
method ConvertToJPG
/+ &InFilename as String +/
/+ Returns String +/
/* This method only works on images without transparent colors (PNG) */
/* Use the ConvertToJPG_w_Trans method if the image has transparencies */
Local string &SourceFile = &InFilename;
Local string &TargetFile = Left(&InFilename, Len(&InFilename) - 3) | "jpg";
try
Local JavaObject &joInputStream = CreateJavaObject("java.io.FileInputStream", &SourceFile);
Local JavaObject &joBufferedImage = CreateJavaObject("java.awt.image.BufferedImage", 1, 1, 1);
Local JavaObject &joImageIO = GetJavaClass("javax.imageio.ImageIO");
&joBufferedImage = &joImageIO.read(&joInputStream);
/*Write Image to File*/
Local JavaObject &joFile = CreateJavaObject("java.io.File", &TargetFile);
&joImageIO.write(&joBufferedImage, "jpg", &joFile);
catch Exception &e
Error &e.ToString();
end-try;
Return &TargetFile;
end-method;
method ConvertToJPG_w_Trans
/+ &InFilename as String +/
/+ Returns String +/
/* should the image be a format such as PNG that contains transparencies */
/* This method will convert the transparent color to white for the jpg */
Local string &SourceFile = &InFilename;
Local string &TargetFile = Left(&InFilename, Len(&InFilename) - 3) | "jpg";
try
/* get source image */
Local JavaObject &joInputStream = CreateJavaObject("java.io.FileInputStream", &SourceFile);
Local JavaObject &joBufferedImage = CreateJavaObject("java.awt.image.BufferedImage", 1, 1, 1);
Local JavaObject &joImageIO = GetJavaClass("javax.imageio.ImageIO");
&joBufferedImage = &joImageIO.read(&joInputStream);
/* new image */
/* Get the java color class so we can tell it what color we want to convert the transparency to */
Local JavaObject &joColor = GetJavaClass("java.awt.Color");
/* draw a blank palet for the new image in the size of the source image */
Local JavaObject &jo_New_BufferedImage = CreateJavaObject("java.awt.image.BufferedImage", &joBufferedImage.getWidth(), &joBufferedImage.getHeight(), 1);
/* Get the creategraphics object from our new blank canvas */
Local JavaObject &JO_g2d = &jo_New_BufferedImage.createGraphics();
/* draw the new image using the source image on a white palet */
&JO_g2d.drawImage(&joBufferedImage, 0, 0, &joColor.WHITE, Null);
/*Write Image to File*/
Local JavaObject &joFile = CreateJavaObject("java.io.File", &TargetFile);
&joImageIO.write(&jo_New_BufferedImage, "jpg", &joFile);
&JO_g2d.dispose();
catch Exception &e
Error &e.ToString();
end-try;
Return &TargetFile;
end-method;
method SendImageToFile
/+ &Str_ImageRecord as String, +/
/+ &InKey as String +/
/+ Returns String +/
Local File &Image_File;
Local string &NewFileName, &FQ_Filename_path;
Local integer &retcode;
/* get file to resolv fully qualified URL of the file */
&NewFileName = %UserId | "_" | &InKey | ".jpg";
&Image_File = GetFile(&NewFileName, "W");
&FQ_Filename_path = &Image_File.Name;
&Image_File.Close();
REM MessageBox(0, "", 0, 0, "REC: %1", &Str_ImageRecord);
&retcode = GetAttachment("RECORD://" | &Str_ImageRecord, &InKey, &FQ_Filename_path);
Return &FQ_Filename_path;
end-method;
method SendImageToFile_W_Name
/+ &Str_ImageRecord as String, +/
/+ &InKey as String, +/
/+ &InNewFileName as String +/
/+ Returns String +/
Local File &Image_File;
Local string &NewFileName, &FQ_Filename_path;
Local integer &retcode;
/* get file to resolv fully qualified URL of the file */
&NewFileName = &InNewFileName;
&Image_File = GetFile(&NewFileName, "W");
&FQ_Filename_path = &Image_File.Name;
&Image_File.Close();
&retcode = GetAttachment("RECORD://" | &Str_ImageRecord, &InKey, &FQ_Filename_path);
rem MessageBox(0, "", 0, 0, "REC: %1 Key: %2 Return Code: %3 Dest: %4", &Str_ImageRecord, &InKey, &retcode, &FQ_Filename_path);
Return &FQ_Filename_path;
end-method;
method GenImageDimensions
/+ &SourceFile as String +/
Local JavaObject &joInputStream = CreateJavaObject("java.io.FileInputStream", &SourceFile);
Local JavaObject &joImageIO = GetJavaClass("javax.imageio.ImageIO");
Local JavaObject &joBufferedImage = CreateJavaObject("java.awt.image.BufferedImage", 1, 1, 1);
&joBufferedImage = &joImageIO.read(&joInputStream);
&Int_Width = &joBufferedImage.getWidth();
&Int_Height = &joBufferedImage.getHeight();
end-method;
get Image_Height
/+ Returns Integer +/
Return &Int_Height;
end-get;
get Image_Width
/+ Returns Integer +/
Return &Int_Width;
end-get;

No comments:

Post a Comment

PeopleCode to retrieve Google map between two addresses

  PeopleCode Example: /* Define constants for the API request */ Local string &origin = "123 Main St, Anytown, USA";   /* ...