27.04.2018 / 14:37 | |
Exception Пользователь Сейчас: Offline
Регистрация: 06.12.2016
| Death, Типа файлы jpg последовательно записаны в другой файл .
|
27.04.2018 / 14:52 | |
Exception Пользователь Сейчас: Offline
Регистрация: 06.12.2016
| Askalite, А как записывать байты последовательно в файлы , например дошел до D9 записал , создал новый файл и так дальше сканируеш и пишеш уже в другой ? Что то я смутно помню эту Яву
|
27.04.2018 / 15:30 | |
Askalite Пользователь Сейчас: Offline
Имя: Аскалайт Регистрация: 12.10.2011
| Цитата Death: Как в массив записан? Ты уверен что там чистые записанные байты изображений друг за другом? может это zip? А может из какой-то игры, то и зашифрован может.Это уже выходит за пределы условий. Лучше бы помог дополнить код на проверку этих условий: Scanner sc;
sc = new Scanner(new File("input.xz"));
byte r;
boolean ff;
boolean begin;
while(sc.hasNextByte()){
r=sc.nextByte();
if(r==0xFF){
ff=true;
continue;//исключение последовательностей FF FF FF
}
if(ff==true){
ff=false;
if(r==0xD8){
begin=true;
readjpg(sc);
}
}
}
readjpg(Scanner sc) throws IOException{
byte r;
boolean ff;
while(sc.hasNextByte()){
r=sc.nextByte();
if(r==0xFF){
ff=true;
continue;//исключение последовательностей FF FF FF
}
//заголовки
if((r==0xFE) || (r==0xDB) || ((0xC0>=r)&&(r<=0cC2)) || (r==0xC4) ){
r=sc.nextByte();
int i=0|(r<<8);
r=sc.nextByte();
i=i|r;
i-=2;
while(i>0){
r=sc.nextByte(); i--;
}
continue;
}
//старт
if(r==0xDA){
r=sc.nextByte();
int i=0|(r<<8);
r=sc.nextByte();
i=i|r;
i-=2;
while(i>0){
r=sc.nextByte(); i--;
}
//TODO
continue;
}
}
}
|
27.04.2018 / 15:52 | |
Askalite Пользователь Сейчас: Offline
Имя: Аскалайт Регистрация: 12.10.2011
| Exception, начиная от начала файла, сохранять всё в расширяемый массив, каждый шаг и очищать массив при ошибке чтения. Когда дойдёшь до финального байта, всё, включая начальный и финальный байт, из сохранённого массива байтов пишешь в файл. PrintWriter pw= new PrintWriter(new File("output"+index+".jpg"));
|
27.04.2018 / 16:11 | |
Exception Пользователь Сейчас: Offline
Регистрация: 06.12.2016
| Askalite, Хорошо , попробую
|
28.04.2018 / 16:10 | |
Askalite Пользователь Сейчас: Offline
Имя: Аскалайт Регистрация: 12.10.2011
| Ух, сделалъ. Scanner sc;
FileOutputStream pw;
sc = new Scanner(new File("input.xz"));
byte r;
boolean ff;
boolean begin;
int index=0;
while(sc.hasNextByte()){
r=sc.nextByte();
if(r==0xFF){
ff=true;
continue;//исключение последовательностей FF FF FF
}
if(ff==true){
ff=false;
if(r==0xD8){
begin=true;
pw=new FileOutputStream(new File("output"+index+".jpg"));
pw.write(0xFF);
pw.write(0xD8);
readjpg(sc, pw);
begin=false;
index++;
}
}
}
//Очень важно определить правильно конец файла jpeg пропустив шапку.
readjpg(Scanner sc, PrintWriter pw) throws IOException{
byte r;
boolean ff;
while(sc.hasNextByte()){
r=sc.nextByte();
pw.write(r);
if(r==0xFF){
ff=true;
continue;//исключение последовательностей FF FF FF
}
//заголовки
if((r==0xFE) || (r==0xDB) || ((0xC0>=r)&&(r<=0cC2)) || (r==0xC4) ){
r=sc.nextByte();
pw.write(r);
int i=0|(r<<8);
r=sc.nextByte();
pw.write(r);
i=i|r;
i-=2;
while(i>0){
r=sc.nextByte(); pw.write(r); i--;
}
continue;
}
//старт
if(r==0xDA){
r=sc.nextByte(); pw.write(r);
int i=0|(r<<8);
r=sc.nextByte(); pw.write(r);
i=i|r;
i-=2;
while(i>0){
r=sc.nextByte(); pw.write(r); i--;
}
boolean ff;
while(sc.hasNextByte()){
r=sc.nextByte(); pw.write(r);
if(r==0xFF){
ff=true;
continue;//исключение последовательностей FF FF FF
}
if(ff==true){
ff=false;
if(r==0xD8){
pw.close();
return;
}
}
}
}
}
|
28.04.2018 / 19:04 | |
Alexandr Пользователь Сейчас: Offline
Имя: Александр Откуда: Днепр Регистрация: 01.07.2012
| Askalite, в полезные коды |
28.04.2018 / 20:22 | |
Exception Пользователь Сейчас: Offline
Регистрация: 06.12.2016
| Askalite, Ты тестил на работоспособность ?
|
28.04.2018 / 21:39 | |
Витаминыч Супермодератор Сейчас: Offline
Имя: Василиус Откуда: RZN Регистрация: 20.04.2012
| Цитата Exception: Askalite, Ты тестил на работоспособность ?Нет, конечно Скомпилировалось - уже круто __________________
わからない!! |
29.04.2018 / 02:38 | |
Askalite Пользователь Сейчас: Offline
Имя: Аскалайт Регистрация: 12.10.2011
| Exception, ну как? Проверил?
|