2014-04-18 3 views
1

Я хочу скопировать все изображения в файл в другой файл с разными именами. Но при заказе меняется порядок изображений. Например, такой порядок: B0. JPG, B1.jpg, .., B9.jpg, B10.jpg, B11.jpg .., B30.jpg. Я хочу изменить имя B0.jpg на image1.jpg, B1.jpg на image2.jpg в аналогичном. Но, он изменяет B0.jpg на B10.jpg, а затем B11.jpg вместо B1, B2, B3 ... Из-за этого порядок изображений изменился. Как я могу исправить эту проблему?Matlab Скопируйте все изображения в другой файл под разными названиями

ответ

1

Проблема заключается в том, что SO заказывает имена файлов, используя сортировку по ASCII, поскольку они являются строками (они не выглядят цифрами по-разному). Строка «10» помещается перед строкой «2», потому что «1» < «2».

Вместо того, чтобы полагаться на заказ, вы могли бы сделать что-то вроде этого:

imgs = dir('*.jpg'); 
for i = 1:numel(imgs) 
    % Change the 'B' to 'image' 
    newName = strrep(imgs(i).name, 'B', 'image'); 

    % Copy the image 
    copyfile(imgs(i).name, ['c:\destination\' newName]); 
end 
+0

Спасибо за ответ. Это решает проблему, когда имя изображения - только B. Я привел B в качестве примера. Название изображений может быть разным или нерегулярным, как a_360, x-180.jpg или B0.jpg. Есть ли какое-либо решение для получения имен изображений с истинным порядком, который начинается с первого элемента файла, чтобы получить имя, а затем второй до последнего элемента (изображения)? – lacy

+0

Предлагаю вам изменить свой вопрос и добавить все сведения, относящиеся к решению. Если есть больше случаев, чем «B [число] .jpg», поместите их в описание, чтобы люди могли больше помочь вам найти приемлемое решение. –

Смежные вопросы