^s-[1-4].$
matcher работает. Но, происходит что-то странное... Похоже на "проскальзывание" основного потока программы до завершения проверки условия... Это конечно уже другой вопрос, так что в любом случае - спасибо. continue;
в том коде, который сопровождает вопрос, всё работает правильно.вывести в отдельную функцию: isIncorrectFileName
какой язык программирования использовать для этого, как будет выглядеть готовый материал и прочее.
ConcurrentHashMap <?,?> inProcess
а на входе в метод выполняю следующую проверку: if(inProcess.conteinsKey(principal_Key)
return 102;
else
inProcess.put(principal_Key);
inProcess.remove(principal_Key);
optimizedImage()
удалось значительно увеличить скорость загрузки и оптимизации изображений: Разрешение 7111x4000 (2.23Mb) загружается и приводится к размерам 3840x2160 (525Kb) в пределах 1 секунды.public boolean optimizedImage(String fullPathToOrigin) {
File imageFile = new File (fullPathToOrigin);
if (imageFile.length()<=524288) //500Kb
return false;
try {
BufferedImage image = ImageIO.read(imageFile);
int width = image.getWidth(), height = image.getHeight();
if (width>3840) {
height = height/(width/3840);
width = 3840;
}
else if (height>2160) {
width = width/(height/2160);
height = 2160;
}
BufferedImage resizeImage = Scalr.resize(image,
Scalr.Method.AUTOMATIC, Scalr.Mode.AUTOMATIC,
width, height, Scalr.OP_ANTIALIAS);
int index = fullPathToOrigin.indexOf(".")+1;
String format = fullPathToOrigin.substring(index);
if (imageFile.exists())
ImageIO.write(resizeImage, format, imageFile);
image.flush();
} catch (IOException e) {
System.out.println(e.getMessage());
return false;
}
return true;
}
BufferedImage
создаёт новый поток в процессе работы с изображением. А если поток не завершён и приходит новый запрос, то он откроет новый поток и в любом случае создаст картинку находящуюся в памяти. для кода в десять строкэтот код, как вы правильно заметили ранее, должен работать одновременно с несколькими пользователями (возможно с 100 или более...).
BufferedImage
вроде как статический и нужно использовать ByteBuffer
а оптимизацию изображения делать независимо от загрузки или как "postprocess". Пример чего?
url('<%=require(`./images/avatar.jpg`)%>')"
Это типа JSP или что это за синтаксис?