У меня есть Java-апплет, который демонстрирует некоторые фильтры.У меня есть предопределенный путь для примера изображения, и пользователь может выбрать собственную картинку.
Я не могу использовать новый файл, потому что я работаю в браузере и не имею доступа к хранилищу пользователей.Поэтому я использую байтовый массив для хранения данных моего изображения, которые были обрезаны и изменены с помощью библиотеки Thumbnailator:
public byte[] resize(String filepath) throws IOException{
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
this.setBackground(Color.RED);
// System.out.println("public File resize(String filepath)...");
Thumbnails.of((new URL(filepath)))
.size(256, 256)
.outputQuality(1.0f)
.outputFormat("jpg")
.toOutputStream(outStream);
byte[] bosArray = null;
bosArray = outStream.toByteArray();
return bosArray;
}
, которая является вызовом resize () в моей функции init ():
try {
if (ONLINE){
String fname = FILENAME;
if(getCodeBase()!=null)
fname = getCodeBase() + FILENAME;
input = resize(fname);
}
else {
inputF = resize(new File(FILENAME));
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
и FILENAME определяется как поле:
private static final String FILENAME = "mountains.png";
в другом классе ImagePanel. Я передаю байтовый массив в BufferedImage:
public class ImagePanel extends JScrollPane {
private BufferedImage img;
private int width;
private int height;
private int[] histo;
private int[] normHisto; // normalized histogram
private int histogramHeight = 256;
private double variance;
private double expectation;
private int maxValueInHisto = 0;
/**
* draw the image by using the stored BufferedImage
*/
public void paint(Graphics g) {
g.drawImage(img, 0, 0, null);
}
.....
public ImagePanel(byte[] input) {
try {
//convert byte array back to BufferedImage
InputStream in = new ByteArrayInputStream(input);
img = ImageIO.read(in);
} catch (IOException e) {
}
updateValues();
this.setSize(width, height);
}
И все работает в программе просмотра Eclipse, но в браузере ... ничего не происходит.Он загружает апплет и ничего не показывает даже без сообщения об ошибке.
Если я закомментирую все и оставлю только инициализацию апплета и установлю цвет фона -> это работает.Так что это означает, что мой HTML-код должен быть в порядке
<applet width="1000" height="1000" code="filterpackage.mainView.class" archive="Thumbnailator-0.3.10-all.jar"/>
Я проверил его в автономном режиме с Xampp и онлайн в Chrome, Safari, Firefox, но ничего не происходит, нет ошибок, но нет панели, нет графического интерфейса ... ничего.
Знаете, что не так?Или у вас есть совет, что я могу попробовать?
Было бы замечательно, если бы кто-нибудь мог помочь мне, я потратил так много времени до сих пор, и я не могу найти решение: (