Hallo zusammen,
ich bin PHP/JS Entwickler und habe von Java so gut wie Null Ahnung.
Ich habe nun ein fertiges Script welches Bilder aus der Zwischenablage direkt in eine Webseite einbindet.
Leider ist die Qualität der Bilder nicht besonders gut (Ich tippe auf ca. 90% Qualität)
Meine Frage wäre nun, ob mir jemand sagen kann, wie ich in diesem Code die JPEG Qualität auf 100% setze,
oder alternativ das Ausgabeformat auf .PNG stelle.
Beides wäre ok.
In vielen anderen Sprachen setzt man beim Resampling oder beim Generierten des Bildes einfach den gewünschten Prozentwert hinzu.
Ich kann mir vorstellen, dass es in Java vergleichbar einfach ist, nur muss man das natürlich wissen.
Ich danke schon mal
ich bin PHP/JS Entwickler und habe von Java so gut wie Null Ahnung.
Ich habe nun ein fertiges Script welches Bilder aus der Zwischenablage direkt in eine Webseite einbindet.
Leider ist die Qualität der Bilder nicht besonders gut (Ich tippe auf ca. 90% Qualität)
Meine Frage wäre nun, ob mir jemand sagen kann, wie ich in diesem Code die JPEG Qualität auf 100% setze,
oder alternativ das Ausgabeformat auf .PNG stelle.
Beides wäre ok.
Java:
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.Toolkit;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import javax.swing.JApplet;
import javax.swing.JOptionPane;
import javax.swing.ImageIcon;
import java.io.ByteArrayOutputStream;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.image.codec.jpeg.JPEGCodec;
import java.net.URL;
import java.net.URLConnection;
import java.io.InputStream;
import javax.swing.JLabel;
public class PasteImageApplet extends JApplet{
Clipboard clipboard;
Toolkit toolkit;
JLabel lbl;
public String getClipboardImageURL(String server){
lbl.setText("pasting image");
String url = "";
try{
DataFlavor dataFlavor = DataFlavor.imageFlavor;
System.out.println(dataFlavor.getDefaultRepresentationClass());
Object object = null;
try{
object = clipboard.getContents(null).getTransferData(dataFlavor);
}catch (Exception e){
JOptionPane.showMessageDialog(null, "No image found.");
return "";
}
BufferedImage img = (BufferedImage) object;
BufferedImage bimg = null;
int w = img.getWidth(null);
int h = img.getHeight(null);
bimg = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
ImageIcon ii = new ImageIcon(img);
ImageObserver is = ii.getImageObserver();
bimg.getGraphics().setColor(new Color(255, 255, 255));
bimg.getGraphics().fillRect(0, 0, w, h);
bimg.getGraphics().drawImage(ii.getImage(), 0, 0, is);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(stream);
jpeg.encode(bimg);
URL u = new URL(server);
URLConnection con = u.openConnection();
//String boundary = "-----------------------------7d637a1aa100de";
con.setDoOutput(true);
con.getOutputStream().write(stream.toByteArray());
/*con.getOutputStream().write(((String)
"--"+boundary+"\r\n "+
"Content-Disposition: form-data; name=\"img\"; filename=\"filename\"\r\n"+
"Content-Type: image/jpeg\r\n "+
"Content-Transfer-Encoding: base64\r\n\r\n" +
Base64.encodeBytes(stream.toByteArray())).getBytes());*/
con.connect();
InputStream inputStream = con.getInputStream();
byte [] urlBytes = new byte [inputStream.available()];
inputStream.read(urlBytes);
url = new String(urlBytes);
System.out.print(url);
lbl.setText("image pasted");
} catch (Exception exc){
lbl.setText("an error occurred: " + exc.getMessage());
/*if (ShowExceptions.ShowExceptions)
exc.printStackTrace();*/
}
return url;
}
public void init() {
lbl = new JLabel("");
lbl.setText("applet started");
add(lbl);
toolkit = Toolkit.getDefaultToolkit();
clipboard = toolkit.getSystemClipboard();
}
}
In vielen anderen Sprachen setzt man beim Resampling oder beim Generierten des Bildes einfach den gewünschten Prozentwert hinzu.
Ich kann mir vorstellen, dass es in Java vergleichbar einfach ist, nur muss man das natürlich wissen.
Ich danke schon mal