Получение размера изображения из 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 - изменение размера и соответствия содержания
  • Согласование ширины subview с надписью с помощью автозапуска
  • UIWebView программно задает начальный масштаб масштабирования при загрузке внешнего веб-сайта?
  • Основной поток блокировки Webthread, когда приложение выходит на передний план
  • Карты Google Maps как карта на iPhone
  • UIView Animation сбрасывает вид на исходный прямоугольник
  • Используйте Adobe Reader для открытия PDF-файла из собственного приложения с помощью WebViewController
  • Отзывчивый дизайн, когда страница загружается в веб-представление приложения iOS
  • WKWebView и NSURLProtocol не работают
  • очистка кеша веб-просмотров для локальных файлов
  • UIWebView копия / вставка не поддерживает шрифт и размер шрифта
  • Interesting Posts

    CVOpenGLESTextureCacheCreateTextureFromImage возвращает ошибку 6683

    Ошибка тестирования песочницы In-App-Purchase

    Белый фон показывает выше UISearchBar для iOS7

    Где я должен сохранять данные и файлы, которые я хочу сохранить в долгосрочной перспективе, и как я могу предотвратить iCloud от их резервного копирования

    Непризнанная ошибка выбора при индексировании в словарь массивов

    Как я могу проверить, является ли indexPath действительным, избегая при этом ошибки «попытка прокрутки до неверного пути индекса»?

    В iOS, как я могу отложить автоматическое вращение во время пользовательской анимации (segue)

    UILabel не автошина

    «Неатомный» имеет смысл в объявленном свойстве «readonly» (включая свойство класса)?

    У 2 объектов, создающих очереди с одинаковыми именами, имеют одну и ту же очередь

    Изменить шрифт кнопки обратной панели навигации

    Хранение Xcode для удаления неиспользуемых символов из статической библиотеки

    Как расширить приложение iOS до tvOS

    Что такое contentOffset & contentInset ScrollView

    Ошибка компоновщика Quickblox: оператор delete (void *) ", на который ссылается

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