Почему переменные width и height не передаются в BufferedImage? Компилятор ругается на 15-ю строчку.
1 static File img = null;
2 static BufferedImage image = null;
3 public static void stegWrite(String filename){
4 img = new File(filename);
5 BufferedImage imgch = null;
6 try{
7 imgch = ImageIO.read(new File(filename));
8 int width = imgch.getWidth(); //Width of the image
9 int height = imgch.getHeight(); //Height of the image
10 }catch(Exception e){
11 imgch = null;
12 }
13 long size = img.length(); //Size of the image
14 try{
15 image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
16 image = ImageIO.read(img);
17 System.out.println("Reading complete.");
18 }catch(IOException e){
19 System.out.println("Error: "+e);
20 }
21 }
Полный код ошибки -- https://sun9-7.userapi.com/c831308/v831308826/178550/guX8nDn5dPo.jpg
Переменная объявленная внутри try/catch
никогда не будут доступна вне конструкции. Читайте про область видимости локальных переменных.
Так будет правильнее:
static File img = null;
static BufferedImage image = null;
public static void stegWrite(String filename)
{
img = new File(filename);
BufferedImage imgch = null;
int width = 0;
int height = 0;
try
{
imgch = ImageIO.read(new File(filename));
width = imgch.getWidth(); // Width of the image
height = imgch.getHeight(); // Height of the image
}
catch (Exception e)
{
imgch = null;
}
long size = img.length(); // Size of the image
try
{
image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
image = ImageIO.read(img);
System.out.println("Reading complete.");
}
catch (IOException e)
{
System.out.println("Error: " + e);
}
}
P.S. На мой взгляд Eclipse
более информативна (из коробки) на всякого рода ошибки в отличии от Intellij IDEA
. Из-за этого у вас и возникла проблема. Eclipse
сразу подсветила ошибку с инициализацией переменных.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я новичок в вопросах работы с БД с внешней стороныНаписал код на Java, с помощью которого пытаюсь установить соединение с базой на хостинге...
Почему нужно указывать объект? Ведь мы можем вообще не использовать этот объект в блоке
Смотрел JVM, наткнулся на аннотацию @HotSpotIntrinsicCandidate, довольно часто ее стал встречатьЧто она значит? Раньше ее не было