الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

ممكن مساعدة شباب

Featured Replies

بتاريخ:

بالأمس قمت باضافة محتوى لعرض الصورة التي يقوم المستخدم بادراجها في الأوراكل ولكن المشكلة أنه يقوم بتخزينها في قاعدة البيانات بنفس حجمها الطبيعي وعند عمل استعلام في فورم الاستعلام فانه يأخذ بعض الوقت لعمل الاستعلام نظرا لأن الصورة حجمها كبير
فهل هناك طريقة لتخزين الصورة في قاعدة البيانات ولكن بحجم أقل من حجمها الطبيعي ؟؟؟
الصورة هي صورة عامل يعني يجب أن تكون الصورة صغيرة ...
أريد أن يقوم المستخدم بادراج أي صورة وأي حجم ولكن عندما يعمل حفظ للفورم يجب أن لا يحفظ بنفس حجمها الطبيعي أريده أن يحفظ بالحجم الذي أقوم بتحديده أنا لأن عدد العمال الذين ستدخل بياناتهم الى المشروع هو 250 ألف عامل
أرجو المساعدة

بتاريخ:

قم بتخير الخصائص التالية للصورة على الفورم

image format=gif ,

sizing style adjust
وستقوم اوراكل بتغير نوع الصورة الى gif وهو نوع صغير الحجم

وستقوم بعمل حجم الصورة بشكل مطابق لحجم اداة الصورة مما يؤدي الى تقليل حجم الصورة او زيادة حجم الصورة لتصبح جميع الصور بتفس الحجم

والله تعالى اعلم

===============================
وإن لم تفلح هذه الطريقة فيوجد طريقة مضمونه وهي

تصمصم شاشة ادخال صور الموظفين عن طريق vs.net

وتستطيع هنا تحجيم الصورة بالطريقة التي تراها مناسبة قبل عملية الحفظ

ويوجد امثله كثيرة عن vs.net على الانترنت للتعامل مع الصور

تم تعديل بواسطة jadquraan

بتاريخ:

وهذه حلول اخرى من الميتالينك

الحل الاول تيحدث عن تغير خصائص الصورة عند حفظها لتقليل حجمها وهذه الطريقة قد تضر بشكل الصورة وجودتها

الحل الثاني يتحدث عن تصمصم اداه عن طريق الجافا بين لتتمكن من قرائة الصورة وتحجمها كما تريد


اترككم مع الحل

Solution 1
Change the Image Item property "Image Depth" from "Original" to another value (Monochrome, Gray, LUT (Lookup Table), RGB (Red, Green, Blue)

Solution 2
To 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 CLASSPATH

Create a jar archive to contain the resulting Java classes: jar -cvf zoom.jar MyImageBean.class ZoomPanel.class ZoomGUI.class
Copy 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 = MyImageBean
The 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 than
increase the memory used by the JInitiator by passing in the JInitiator Control Panel the Runtime
Parameter:

-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.

References
Note 137397.1 - How to Read_Image_File with a JAR File When Running Web Forms
Note 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

بتاريخ:

اللهم اغفر له ولوالديه ولزوجته وابنائه ولأخوانه واخواته ولسائر المسلمين والمسلمات ماتقدم من ذنبهم وما تأخر..
وقِهم عذاب القبر وعذاب النار..
و أدخلهم الفردوس الأعلى مع الأنبياء والشهداء والصالحين ..
واجعل دعاءهم مستجاب في الدنيا والآخرة ..
اللـهم آميـن..اللـهم آميـن..اللـهم آميـن..

يا هلا بالقرعان

بتاريخ:

وإياكم يا رب العالمين

تسلم يا الغالي

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.