بتاريخ: 17 سبتمبر 200916 سنة comment_169960 بالأمس قمت باضافة محتوى لعرض الصورة التي يقوم المستخدم بادراجها في الأوراكل ولكن المشكلة أنه يقوم بتخزينها في قاعدة البيانات بنفس حجمها الطبيعي وعند عمل استعلام في فورم الاستعلام فانه يأخذ بعض الوقت لعمل الاستعلام نظرا لأن الصورة حجمها كبيرفهل هناك طريقة لتخزين الصورة في قاعدة البيانات ولكن بحجم أقل من حجمها الطبيعي ؟؟؟الصورة هي صورة عامل يعني يجب أن تكون الصورة صغيرة ...أريد أن يقوم المستخدم بادراج أي صورة وأي حجم ولكن عندما يعمل حفظ للفورم يجب أن لا يحفظ بنفس حجمها الطبيعي أريده أن يحفظ بالحجم الذي أقوم بتحديده أنا لأن عدد العمال الذين ستدخل بياناتهم الى المشروع هو 250 ألف عاملأرجو المساعدة تقديم بلاغ
بتاريخ: 20 سبتمبر 200916 سنة comment_170064 قم بتخير الخصائص التالية للصورة على الفورم image format=gif , sizing style adjust وستقوم اوراكل بتغير نوع الصورة الى gif وهو نوع صغير الحجم وستقوم بعمل حجم الصورة بشكل مطابق لحجم اداة الصورة مما يؤدي الى تقليل حجم الصورة او زيادة حجم الصورة لتصبح جميع الصور بتفس الحجم والله تعالى اعلم===============================وإن لم تفلح هذه الطريقة فيوجد طريقة مضمونه وهي تصمصم شاشة ادخال صور الموظفين عن طريق vs.netوتستطيع هنا تحجيم الصورة بالطريقة التي تراها مناسبة قبل عملية الحفظ ويوجد امثله كثيرة عن vs.net على الانترنت للتعامل مع الصور تم تعديل 20 سبتمبر 200916 سنة بواسطة jadquraan تقديم بلاغ
بتاريخ: 20 سبتمبر 200916 سنة comment_170066 وهذه حلول اخرى من الميتالينك الحل الاول تيحدث عن تغير خصائص الصورة عند حفظها لتقليل حجمها وهذه الطريقة قد تضر بشكل الصورة وجودتها الحل الثاني يتحدث عن تصمصم اداه عن طريق الجافا بين لتتمكن من قرائة الصورة وتحجمها كما تريد اترككم مع الحل Solution 1Change the Image Item property "Image Depth" from "Original" to another value (Monochrome, Gray, LUT (Lookup Table), RGB (Red, Green, Blue)Solution 2To work-around these problems the following example can be used. This is a Java Bean which can be integrated in Oracle Forms and which is reading an image file from an URL it displays it. Also, by selecting a rectangle from the image the zoom feature will come into action, while with the right mouse click the image can be set back into the original state. The following steps has been compiled for Oracle Forms 10.1.2.0.2 running on Windows OS and using JInitiator 1.3.1.22 on the client side, but they can be easily adapted for other platforms. We will need the Java[tm] Advanced Imaging 1.1.2_01 which can be obtained from the following URL:http://java.sun.com/products/java-media/ja...d-1_1_2_01.html Choose CLASSPATH Install For Windows, download Windows CLASSPATH Install. ( The file name "jai-1_1_2_01-lib-windows-i586.exe" ) . Install the program in a new folder. We will need only the following two files: <JAI_INSTALLATION_DIRECTORY>\lib\jai_codec.jar <JAI_INSTALLATION_DIRECTORY>\lib\jai_core.jar Copy these two files in the directory: <ORACLE_HOME>\forms\java\ Open a command prompt window and set the environment: set PATH=<ORACLE_HOME>\jdk\bin set CLASSPATH=<ORACLE_HOME>\forms\java\frmall.jar;<JAI_INSTALLATION_DIRECTORY>\lib\jai_codec.jar;<JAI_IN STALLATION_DIRECTORY>\lib\jai_core.jar; Create the following three text files: - file "ZoomPanel.java" which has the content:import java.io.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.net.*; import java.util.*; import java.beans.*; import javax.swing.*; import java.awt.geom.*; public class ZoomPanel extends JComponent { protected AffineTransform atx = new AffineTransform(); protected int imageWidth, imageHeight; protected double pzoom; protected double magFactorX = 1.0; protected double magFactorY = 1.0; protected int magCenterX = 0; protected int magCenterY =0; protected Point zoomOffset = new Point(0,0); protected int width, height; transient public BufferedImage bufferedImage, displayImage; transient protected Graphics2D dispGc; public void setBufferedImage(BufferedImage bimage, double vzoom) { reset(vzoom); this.pzoom = vzoom; this.bufferedImage = bimage; imageWidth = bufferedImage.getWidth(); imageHeight = bufferedImage.getHeight(); applyTransform(atx); repaint(); } public BufferedImage getBufferedImage() { return bufferedImage; } public void setMagFactorX(double magFactor) { this.magFactorX = magFactor; } public void setMagFactorY(double magFactor) { this.magFactorY = magFactor; } public double getMagFactorX() { return magFactorX; } public double getMagFactorY() { return magFactorY; } public AffineTransform getAffineTransform() { return atx; } public Dimension getImageDimension() { return new Dimension(imageWidth, imageHeight); } public Graphics2D getDisplayedImageGC() { return dispGc; } protected void applyTransform(BufferedImage bi, AffineTransform atx) { if(bufferedImage == null) return; createDisplayImage(); dispGc.setColor(Color.white); dispGc.fillRect(0,0,displayImage.getWidth(), displayImage.getHeight()); dispGc.drawImage(bi,atx,this); repaint(); } public void applyTransform(AffineTransform atx) { applyTransform(bufferedImage, atx); this.atx = atx; repaint(); } protected void createDisplayImage() { displayImage = new BufferedImage(imageWidth,imageHeight,BufferedImage.TYPE_INT_RGB); setOffScrGc(); } protected void setOffScrGc() { if(displayImage!= null) { dispGc = displayImage.createGraphics(); dispGc.setColor(getBackground()); dispGc.fillRect(0,0, width, height); dispGc.setColor(getForeground()); dispGc.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY); } } public void paintComponent(Graphics gc) { super.paintComponent(gc); Graphics2D g = (Graphics2D)gc; Rectangle d = getBounds(); if((d.width != width)|| (d.height != height)) { width = d.width; height = d.height; } if(displayImage!= null) { g.fillRect(0,0,displayImage.getWidth(), displayImage.getHeight()); g.drawImage(displayImage,0,0,this); } } public void zoomout(double vzoom) { int x = 0; int y = 0; paintImage(x,y,vzoom, vzoom); repaint(); } public void reset( double vzoom ) { magFactorX = 1.0; magFactorY = 1.0; atx = new AffineTransform(); applyTransform(bufferedImage,atx); this.zoomout(vzoom); } public void magnify(Rectangle currentShape) { int shapeWidth = currentShape.width; int shapeHeight = currentShape.height; double magX = imageWidth/(double)shapeWidth; double magY = imageHeight/(double)shapeHeight; int x = currentShape.x + shapeWidth/2; int y = currentShape.y + shapeHeight/2; paintImage(x,y,magX, magY); repaint(); } public void paintImage(int magCenterX, int magCenterY, double magX, double magY) { setMagFactorX(this.magFactorX *magX); setMagFactorY(this.magFactorY *magY); this.magCenterX = magCenterX; this.magCenterY = magCenterY; try { Point2D mgp = null; mgp = atx.inverseTransform((Point2D)(new Point(magCenterX, magCenterY)),(Point2D)mgp); double x = (mgp.getX()*magX)-mgp.getX(); double y = (mgp.getY()*magY)-mgp.getY(); scale(-x,-y, magX, magY); } catch (Exception e) { System.out.println(e); } } public void scale(double magOffsetX, double magOffsetY, double magX, double magY) { atx.translate(magOffsetX,magOffsetY); atx.scale(magX,magY); applyTransform(atx); } public void resetAndScale(double magOffsetX, double magOffsetY, double magX, double magY) { atx.setToTranslation(magOffsetX,magOffsetY); atx.scale(magX,magY); applyTransform(atx); } } - For file "ZoomGUI.java" modify the code as the following: import java.awt.*; import java.awt.image.*; import java.awt.geom.*; import javax.swing.*; import java.awt.event.*; import com.sun.media.jai.codec.*; public class ZoomGUI implements MouseListener,MouseMotionListener,ActionListener { ZoomPanel imageCanvas; private Point diff = new Point(0,0); private Point shapeAnchor = new Point(0,0); boolean mousePressed = false; Rectangle currentShape, prevShape; public ZoomGUI(ZoomPanel c) { imageCanvas = c; imageCanvas.addMouseListener(this); imageCanvas.addMouseMotionListener(this); } public void startDraw(int x, int y) { shapeAnchor = new Point(x,y); diff = new Point(0,0); } public void draw(int x, int y) { diff.x = x - shapeAnchor.x; diff.y = y - shapeAnchor.y; int wid = diff.x; int ht = diff.y; Point ulhc = new Point(shapeAnchor); if(diff.x <0) { wid = -diff.x; ulhc.x = x; } if(diff.y <0) { ht = -diff.y; ulhc.y = y; } currentShape = new Rectangle(ulhc.x, ulhc.y, wid, ht); Graphics g = imageCanvas.getDisplayedImageGC(); g.setColor(Color.black); g.setXORMode(Color.white); if(prevShape != null) { g.drawRect((int)prevShape.getX(), (int)prevShape.getY(), (int)prevShape.getWidth(), (int)prevShape.getHeight()); } if(currentShape != null) { g.drawRect((int)currentShape.getX(), (int)currentShape.getY(), (int)currentShape.getWidth(), (int)currentShape.getHeight()); } prevShape = currentShape; imageCanvas.repaint(); } public void mousePressed(MouseEvent e) { mousePressed = true; if(SwingUtilities.isLeftMouseButton(e)) { startDraw(e.getX(), e.getY()); } else { popupMenu((JComponent)e.getSource(), e.getX(), e.getY()); } } public void mouseReleased(MouseEvent e) { if(SwingUtilities.isLeftMouseButton(e)) { draw(e.getX(), e.getY()); prevShape = null; imageCanvas.magnify(currentShape); } mousePressed = false; } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mouseDragged(MouseEvent e) { if(SwingUtilities.isLeftMouseButton(e)) { draw(e.getX(), e.getY()); } } public void mouseMoved(MouseEvent e) { } public void actionPerformed(ActionEvent e) { imageCanvas.reset(imageCanvas.pzoom); } protected void popupMenu(JComponent comp,int x, int y) { JPopupMenu jp = new JPopupMenu(""); jp.setLightWeightPopupEnabled(true); comp.add(jp); JMenuItem reset = new JMenuItem("Reset"); reset.addActionListener(this); jp.add(reset); jp.show(comp,x,y); } } - For the file "MyImageBean.java" modify it as the following: import java.awt.*; import java.awt.geom.*; import java.awt.image.*; import java.awt.print.*; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.WritableRaster; import javax.swing.*; import java.util.*; import oracle.forms.ui.*; import oracle.forms.handler.*; import oracle.forms.properties.*; import java.awt.image.RenderedImage; import javax.media.jai.*; import javax.media.jai.JAI; import com.sun.media.jai.codec.*; public class MyImageBean extends VBean { private static final ID IMAGEURL = ID.registerProperty("imageURL"); private static final ID ZOOM = ID.registerProperty("zoom"); protected RenderedImage myImage = null; protected int imageWidth, imageHeight; protected double pZoom=1.0; ZoomPanel pan = null; ZoomGUI zoomGui = null; public void setZoomXY (double vZoom) { this.pZoom = vZoom; } public void setImage(String imageURL) { try { if(imageURL.compareTo("null")!=0) { RenderedOp renderedOp = JAI.create("url", new java.net. URL(imageURL)); PlanarImage renderedImage = renderedOp.createInstance(); BufferedImage img = renderedImage.getAsBufferedImage(); imageWidth = renderedImage.getWidth() * (int) this.pZoom ; imageHeight = renderedImage.getHeight() * (int) this.pZoom; displayImage(img, imageWidth, imageHeight,this.pZoom); } else { pan.remove(this.pan); pan = null; zoomGui = null; repaint(); } } catch (Exception e) { e.printStackTrace(); } } public Object getProperty(ID id) { try { return super.getProperty(id); } catch (Exception e) { e.printStackTrace(); return null; } } public boolean setProperty(ID id, Object value) { try { // the order of the if condition is important if (id == ZOOM) { setZoomXY(Double.parseDouble((String)value)); return true; } else if (id == IMAGEURL) { this.setImage((String)value); return true; } return super.setProperty(id, value); } catch (Exception e) { e.printStackTrace(); return false; } } public void displayImage(BufferedImage img, int wid, int ht, double vZoom) { pan = new ZoomPanel(); pan.setBufferedImage(img,vZoom); zoomGui = new ZoomGUI(pan); pan.setSize(wid,ht); this.add(pan); } } Compile the previous three files: javac ZoomPanel.java javac ZoomGUI.java javac MyImageBean.java Please note that the files ZoomGUI.java and MyImageBean.java are depend on ZoomPanel.class, so that the location of file ZoomPanel.class must be set in the CLASSPATHCreate a jar archive to contain the resulting Java classes: jar -cvf zoom.jar MyImageBean.class ZoomPanel.class ZoomGUI.classCopy the previously resulted "zoom.jar" file in the directory: <ORACLE_HOME>\forms\java\ and set the Oracle Forms environment by editing the file: and edit the value of the parameter: archive_jini=frmall_jinit.jar,zoom.jar,jai_core.jar,jai_codec.jar For Oracle Forms Builder, add the file :<ORACLE_HOME>\forms\java\zoom.jar to FORMS_BUILDER_CLASSPATH variable in the Windows registry in HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_<ORACLE_HOME_NAME><ORACLE_HOME>\forms\server\formsweb.cfg Open Forms Builder and create a simple Form module with just a button and a Java Bean Area.The Bean Area will use in the Property Palette: Implementation Class = MyImageBeanThe Button will have a WHEN-BUTTON-PRESSED triggerwith the following code: SET_CUSTOM_PROPERTY('<block name>.<bean name>',1, 'zoom', '<your zoom initial value for example: 0.5>'); SET_CUSTOM_PROPERTY('<block name>.<bean name>', 1, 'imageURL', '<URL used to display the image in a web browser>'); For resetting the image SET_CUSTOM_PROPERTY('<block name>.<bean name>', ALL_ROWS, 'imageURL', 'null'); Compile and run the Form. If when working with very large images you get the message java.lang.OutOfMemory Exception thanincrease the memory used by the JInitiator by passing in the JInitiator Control Panel the RuntimeParameter:-Xmx256M You have to sign the jarfile! -> Note 202768.1 - Signing a Java Bean for Deployment with Forms 9i / 10g With Oracle Jinitiator .To download the Project files, click here. ReferencesNote 137397.1 - How to Read_Image_File with a JAR File When Running Web FormsNote 202768.1 - Signing a Java Bean for Deployment with Forms 9i / 10g With Oracle Jinitiator.Note 297748.1 - Poor Image Quality for Imported Image When Run on the Web تقديم بلاغ
بتاريخ: 20 سبتمبر 200916 سنة comment_170102 اللهم اغفر له ولوالديه ولزوجته وابنائه ولأخوانه واخواته ولسائر المسلمين والمسلمات ماتقدم من ذنبهم وما تأخر..وقِهم عذاب القبر وعذاب النار..و أدخلهم الفردوس الأعلى مع الأنبياء والشهداء والصالحين ..واجعل دعاءهم مستجاب في الدنيا والآخرة ..اللـهم آميـن..اللـهم آميـن..اللـهم آميـن..يا هلا بالقرعان تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.