Получение размера изображения из HTML

Я разбираю RSS-канал из блога и помещаю HTML-сообщение в UIWebView .

Но теперь я хотел бы изменить размер изображений в соответствии с экраном iPhone. Я пытаюсь с заменой

 HTMLContent = [HTMLContent stringByReplacingOccurrencesOfString:@"width=\"480\"" withString:@"width=\"300\""]; 

Но делая это, я заменяю только изображения шириной 480 пикселей. И, кроме того, я не меняю высоту!

Знаете ли вы, есть ли способ заменить любую ширину на 300 и изменить высоту на тот же коэффициент?

One Solution collect form web for “Получение размера изображения из HTML”

Вы можете сделать это, используя регулярное выражение. Вам нужно сопоставить теги <img> внутри строки и извлечь значения высоты и ширины, затем рассчитать новую желаемую высоту и ширину, а затем заменить высоту и ширину в строке новыми значениями.

Следующий код должен работать, но он может пропустить некоторые случаи кросс (например, если атрибут height появляется перед атрибутом width в теге img ).

 int maxWidth = 300; NSString *originalHTML = @"<html><body><img src='image1.gif' width='4800' height='80' alt='foobar'/><img src='image1.gif' width='70000' height='99999' alt='foobar'/></body></html>"; NSString *regexPattern = @"<img[^>]*width=['\"\\s]*([0-9]+)[^>]*height=['\"\\s]*([0-9]+)[^>]*>"; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexPattern options:NSRegularExpressionDotMatchesLineSeparators error:nil]; NSMutableString *modifiedHTML = [NSMutableString stringWithString:originalHTML]; NSArray *matchesArray = [regex matchesInString:modifiedHTML options:NSRegularExpressionCaseInsensitive range:NSMakeRange(0, [modifiedHTML length]) ]; NSTextCheckingResult *match; // need to calculate offset because range position of matches // within the HTML string will change after we modify the string int offset = 0, newoffset = 0; for (match in matchesArray) { NSRange widthRange = [match rangeAtIndex:1]; NSRange heightRange = [match rangeAtIndex:2]; widthRange.location += offset; heightRange.location += offset; NSString *widthStr = [modifiedHTML substringWithRange:widthRange]; NSString *heightStr = [modifiedHTML substringWithRange:heightRange]; int width = [widthStr intValue]; int height = [heightStr intValue]; if (width > maxWidth) { height = (height * maxWidth) / width; width = maxWidth; NSString *newWidthStr = [NSString stringWithFormat:@"%d", width]; NSString *newHeightStr = [NSString stringWithFormat:@"%d", height]; [modifiedHTML replaceCharactersInRange:widthRange withString:newWidthStr]; newoffset = ([newWidthStr length] - [widthStr length]); heightRange.location += newoffset; [modifiedHTML replaceCharactersInRange:heightRange withString:newHeightStr]; newoffset += ([newHeightStr length] - [heightStr length]); offset += newoffset; } } NSLog(@"%@",modifiedHTML); 
  • UIWebView PDF гиперссылка отключить лист действий
  • UIWebView не отображает весь контент!
  • Как определить перенаправление в UIWebView
  • Objective-C: Воспроизведение видео Youtube в приложении
  • Есть ли способ отслеживать загрузку отдельных ресурсов в uiwebview для ios
  • UIWebView не собирает текст QuickType в поле ввода HTML в iOS 8.1.2
  • Автозапуск видео YouTube в UIWebview
  • Добавить индикатор активности в uiwebview
  • Почему Youtube Video не заполняет UiWebView?
  • NSURLProtocol не загружается после ответа YES на canInitWithRequest
  • UIWebView поиск
  • Interesting Posts

    Быстрая структура в зависимости от какао-бота

    AVQueuePlayer воспроизводит серию клипов без иски

    Как просматривать основные данные в моем приложении на моем iPhone?

    UITabBar скроет последнюю ячейку UITableView

    Могу ли я использовать UIPinchGestureRecognizers для различения горизонтальных и вертикальных пинчей?

    Воспроизведение видео в facebook в приложении ios

    Как сохранить пользовательские объекты в массиве и сохранить его в NSUserDefaults – iPhone

    Visual Studio Cordova – не удается развернуть приложение

    Как скрыть навигационную панель назад?

    Архив сборки Cordova iOS преуспевает, но экспорт не выполняется без ошибок на XCode 9

    Как скомпилировать автоматически созданные приложения для iOS?

    Как предотвратить дополнительный просмотр, отображающий код доступа при использовании Google OAuth 2.0

    Swift 3 – Отправить сделать синхронный запрос http

    Добавить уведомление в массив результатов в реальном времени

    Где моя память в режиме ожидания iPad?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.